# oss-spring-boot-start **Repository Path**: bushro/oss-spring-boot-start ## Basic Information - **Project Name**: oss-spring-boot-start - **Description**: aws-s3 通用存储操作 支持所有兼容s3协议的云存储: {阿里云OSS,腾讯云COS,七牛云,京东云,minio 等} - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 1 - **Created**: 2022-10-15 - **Last Updated**: 2023-11-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: oss ## README # oss-spring-boot-start ## 介绍 aws-s3 通用存储操作 支持所有兼容s3协议的云存储: {阿里云OSS,腾讯云COS,七牛云,京东云,minio 等} ## 软件架构 springboot项目引入依赖 ### 代码使用 ```xml com.bushro oss-spring-boot-start 1.0.0 ``` ```java @Autowire private OssTemplate template; /** * 上传文件 * 文件名采用uuid,避免原始文件名中带"-"符号导致下载的时候解析出现异常 * * @param file 资源 * @return R(bucketName, filename) */ @PostMapping("/upload") public R upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) { template.putObject(CommonConstants.BUCKET_NAME, fileName, file.getInputStream()); return R.ok(resultMap); } ``` 一般来说需要把文件信息记录到本地的表中,方便查看。 表结构示例: ```sql CREATE TABLE `sys_file` ( `id` bigint(20) NOT NULL COMMENT '编号', `file_name` varchar(100) DEFAULT NULL COMMENT '文件名称', `bucket_name` varchar(200) DEFAULT NULL COMMENT '存储库名称', `original` varchar(100) DEFAULT NULL COMMENT '原文件', `type` varchar(50) DEFAULT NULL COMMENT '文件类型', `file_size` bigint(20) DEFAULT NULL COMMENT '文件大小', `create_by` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT ' ' COMMENT '创建人', `update_by` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT ' ' COMMENT '修改人', `create_time` datetime DEFAULT NULL COMMENT '上传时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `del_flag` char(1) DEFAULT '0', `tenant_id` bigint(20) DEFAULT NULL COMMENT '所属租户', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文件管理表'; ``` 使用OssTemplate上传后在记录到本地表中,看自己项目需求。 ## 阿里云OSS对接 海量、安全、低成本、高可靠的云存储服务,提供 99.9999999999%的数据可靠性。使用 RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本。 ### 获取参数 - [1. 注册阿里云账号,并实名认证](https://www.aliyun.com/minisite/goods?userCode=ueyxv2qf) - [2. 获取访问密钥](https://usercenter.console.aliyun.com/#/manage/ak) ![在这里插入图片描述](https://img-blog.csdnimg.cn/61b435515ec54fa2a21450bab95064c7.png) - [3. 创建 bucket](https://oss.console.aliyun.com/bucket) ![在这里插入图片描述](https://img-blog.csdnimg.cn/80863ccd2f94491d8a893f188796d948.png) - 4.访问空间列表,获取刚创建空间基本信息 ![在这里插入图片描述](https://img-blog.csdnimg.cn/056444712a034a70b88e9ccb24e54bfb.png) ### oss 配置 ```yaml oss: path-style-access: false #使用云OSS 需要关闭 endpoint: oss-cn-beijing.aliyuncs.com #对应上图 4 处配置 access-key: xxx # 上文创建的AK secret-key: xxx # 上文创建的SK bucketName: bushro-oss # 上文创建的桶名称 ``` ### 代码使用 ```xml com.bushro oss-spring-boot-start 1.0.0 ``` ```java @Autowire private OssTemplate template; /** * 上传文件 * 文件名采用uuid,避免原始文件名中带"-"符号导致下载的时候解析出现异常 * * @param file 资源 * @return R(bucketName, filename) */ @PostMapping("/upload") public R upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) { template.putObject(CommonConstants.BUCKET_NAME, fileName, file.getInputStream()); return R.ok(resultMap); } ``` ## 七牛云存储对接 七牛云对象存储是七牛云提供的高可靠、强安全、低成本、可扩展的存储服务。本白皮书详细介绍七牛云对象存储优势、服务场景、资费、功能以及操作指南。 提供免费空间和 CDN 流量供大家测试。 ### 获取七牛相关参数 - [1. 注册七牛云账号,并实名认证](https://portal.qiniu.com/signup?code=1hmfw3964ueky) - [2. 创建访问密钥](https://portal.qiniu.com/user/key) ![在这里插入图片描述](https://img-blog.csdnimg.cn/7e6680a37ca646de9ae7246cd553b7ca.png) - [3. 创建存储空间](https://portal.qiniu.com/kodo/bucket?shouldCreateBucket=true) ![在这里插入图片描述](https://img-blog.csdnimg.cn/d73bcdd264ac44a3b9b02a119e731bee.png) - [4. 访问空间列表,获取刚创建空间基本信息](https://portal.qiniu.com/kodo/bucket) ![a](https://img-blog.csdnimg.cn/b86b1e5827dc4b42b19cc11e6899534f.png) ### oss 配置 ```yaml oss: #使用云OSS 需要关闭 path-style-access: false #对应上图 4 处配置 endpoint: rkacs7et8.hn-bkt.clouddn.com # 上文创建的AK, 一定注意复制完整不要有空格 access-key: xxx # 上文创建的SK, 一定注意复制完整不要有空格 secret-key: xxx # 上文创建的桶名称 bucketName: bushro-kodo ``` ### 后台代码使用 ```xml com.bushro oss-spring-boot-start 1.0.0 ``` ## 华为云存储 > 本章节内容针对 V3.9 之后版本,支持云厂商 OSS 华为云对象存储服务(Object Storage Service)是一款稳定、安全、高效、易用的云存储服务,具备标准 Restful API 接口,可存储任意数量和形式的非结构化数据 ### 获取华为云相关参数 - [1. 注册华为云账号,并实名认证](https://www.huaweicloud.com/s/JeWtmOWCqCU) - [2. 获取访问密钥](https://console.huaweicloud.com/iam/#/mine/accessKey) 创建完需要下载下来 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1b63d04f90274755bd517108d0ad0d55.png) - [3. 创建桶](https://storage.huaweicloud.com/obs/#/obs/create) ![在这里插入图片描述](https://img-blog.csdnimg.cn/1452c49e4e65447f9359138c6dc5b004.png) - [4. 访问空间列表,获取刚创建空间基本信息](https://storage.huaweicloud.com/obs) ![在这里插入图片描述](https://img-blog.csdnimg.cn/d301fbd14f1642e6a371a0ddc8335ba5.png) ### oss 配置 ```yaml oss: path-style-access: false #使用云OSS 需要关闭 endpoint: obs.cn-north-4.myhuaweicloud.com #对应上图 4 处配置 access-key: xxx # 上文创建的AK secret-key: xxx # 上文创建的SK bucketName: xxx # 上文创建的桶名称 ``` ### 代码使用 ```xml com.bushro oss-spring-boot-start 1.0.0 ``` ```java @Autowire private OssTemplate template; /** * 上传文件 * 文件名采用uuid,避免原始文件名中带"-"符号导致下载的时候解析出现异常 * * @param file 资源 * @return R(bucketName, filename) */ @PostMapping("/upload") public R upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) { template.putObject(CommonConstants.BUCKET_NAME, fileName, file.getInputStream()); return R.ok(resultMap); } ``` ```java @Autowire private OssTemplate template; /** * 上传文件 * 文件名采用uuid,避免原始文件名中带"-"符号导致下载的时候解析出现异常 * * @param file 资源 * @return R(bucketName, filename) */ @PostMapping("/upload") public R upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) { template.putObject(CommonConstants.BUCKET_NAME, fileName, file.getInputStream()); return R.ok(resultMap); } ``` ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)