Spring Boot对接七牛云存储的详细步骤和流程
目录
- 一、前期准备
- 二、Spring Boot 项目配置
- 1. 添加依赖
- 2. 配置参数
- 3. 配置类
- 三、实现文件上传功能
- 1. 工具类开发
- 2. Controller 层
- 四、扩展功能
- 1. 文件下载
- 2. 文件删除
- 3. 文件列表查询
- 五、前端集成示例
- 1. html 表单
- 2. AJAX 上传(jquery)
- 六、注意事项
以下是 Spring Boot 对接七牛云存储的详细步骤和流程,结合了多个开发实践和最佳方案:
一、前期准备
注册七牛云账号
- 访问七牛云官网,完成注册并登录。
- 进入「密钥管理」获取
Access Key
和Secret Key
(用于鉴权)。
创建存储空间(Bucket)
- 在控制台选择「对象存储」,创建新的存储空间,命名后记录
Bucket 名称
。 - 设置存储空间属性(如存储类型、地域等),获取存储空间的访问域名(如
http://xxx.bkt.clouddn.com
)。
二、Spring Boot 项目配置
1. 添加依赖
在 pom.XML
中引入七牛云 Java SDK:
<dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>[7.2.0, 7.7.99]</version> </dependency>
注意:版本号需根据最新网页调整。
2. 配置参数
在 application.yml
中添加七牛云配置:
qiniu: accessKey: your_access_key secretKey: your_secret_key bucket: your_bucket_name domain: http://xxx.bkt.clouddn.com # 存储空间访问域名 region: huadong # 存储空间所在地域(如华东:huadong)
3. 配置类
创建 QiniuProperties
类绑定配置:
@Data @ConfigurationProperties(prefix = "qiniu") public class QiniuProperties { private String accessKey; private String secretKey; private String bucket; private String domain; private String region; }
三、实现文件上传功能
1. 工具类开发
创建 QiniuUtils
工具类,封装上传逻辑:
@Component public class QiniuUtils { @Autowired private QiniuProperties qiniuProperties; // 上传文件到七牛云 public String uploadFile(MultipartFile file) { try { Configuration cfg = new Configuration(Region.region2()); // 根据实际地域选择 UploadManager uploadManager = new UploadManager(cfg); Auth auth = Auth.create(qiniuProperties.getAccessKey(), qiniuProperties.getSecretKey()); String upToken = auth.uploadToken(qiniuProperties.getBucket()); // 生成唯一文件名(避免重复) String fileName = UUID.randomUUID().toString() + "_" + file.getOriginalFilename(); // 上传并解析结果 Response response = uploadManager.put(file.getBytes(), fileName, upToken); DefaultPutRet putRet = jsON.parseobject(response.bodyString(), DefaultPutRet.class); // 返回完整访问路径 return qiniuProperties.getDomain() + "/" + putRet.key; } catch (Exception e) { throw new RuntimeException("上传失败:" + e.getMessage()); } } }
关键点:
- 使用 Region 指定存储区域(如 Region.huadong() 对应华东)。
- 文件名通过 UUID 生成唯一标识,保留原始后缀。
2. Controller 层
创建接口接收前端上传请求:
@RestController @RequestMapping("/file") public class FileController { @Autowired private QiniuUtils qiniuUtils; @PostMapping("/upload") public R uploadFile(@RequestParam("file") MultipartFile file) { String url = qiniuUtils.uploadFile(file); return R.success(url); } }
四、扩展功能编程客栈
1. 文件下载
通过七牛云域名直接访问文件,或生成带签名的临时下载链接:
public String generateDownloadUrl(String key) { Auth auth = Auth.create(accessKey, secretKey); return auth.privateDownloadUrl(domain + "/" + key, 3600www.devze.com); // 1小时有效 }
2. 文件删除
使用 BucketManager
删除指定文件:
public void deleteFile(String key) { Auth auth = Auth.create(accessKey, secretKey); BucketManager bucketManager = new BucketManager(auth, config); bucketManager.delete(bucketName, key); }
3. 文件列表查询
遍历存储空间中的文www.devze.com件(分页处理):
public编程客栈 List<String> listFiles(String prefix, String marker) { Auth auth = Auth.create(accessKey, secretKey); BucketManager bucketManager = new BucketManager(auth, config); BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(bucketName, prefix, 1000, marker); List<String> fileList = new ArrayList<>(); while (fileListIterator.hasNext()) { FileInfo[] items = fileListIterator.next(); for (FileInfo item : items) { fileList.add(item.key); } } return fileList; }
五、前端集成示例
1. HTML 表单
<form action="/file/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <button type="submit">上传</button> </form>
2. AJAX 上传(jQuery)
$.ajax({ url: "/file/upload", type: "POST", data: new FormData($("#uploadForm")[0]), processData: false, contentType: false, success: function(res) { console.log("上传成功:" + res.data); } });
六、注意事项http://www.devze.com
文件大小限制
- 在
application.yml
中配置:
spring: servlet: multipart: max-file-size: 10MB max-request-size: 50MB
异常处理
- 添加全局异常处理器,捕获七牛云 SDK 抛出的
QiniuException
。
安全性
- 敏感操作(如删除)需添加权限校验。
- 临时下载链接建议设置短有效期。
通过以上步骤,即可实现 Spring Boot 与七牛云存储的完整对接,支持文件上传、下载、删除及列表查询等核心功能。实际开发中可根据需求扩展图片处理(如缩略图)、水印添加等高级功能。
以上就是Spring Boot对接七牛云存储的详细步骤和流程的详细内容,更多关于Spring Boot对接七牛云存储的资料请关注编程客栈(www.devze.com)其它相关文章!
精彩评论