开发者

Spring Boot对接七牛云存储的详细步骤和流程

目录
  • ​​一、前期准备​​
  • ​​二、Spring Boot 项目配置​​
    • 1. ​​添加依赖​​
    • 2. ​​配置参数​​
    • 3. ​​配置类​​
  • ​​三、实现文件上传功能​​
    • 1. ​​工具类开发​​
    • 2. ​​Controller 层​​
  • ​​四、扩展功能​​
    • 1. ​​文件下载​​
    • 2. ​​文件删除​​
    • 3. ​​文件列表查询​​
  • ​​五、前端集成示例​​
    • 1. ​​html 表单​​
    • 2. ​​AJAX 上传(jquery)​​
  • ​​六、注意事项​​

    以下是 Spring Boot 对接七牛云存储的详细步骤和流程,结合了多个开发实践和最佳方案:

    ​​一、前期准备​​

    ​注册七牛云账号​

    • 访问七牛云官网,完成注册并登录。
    • 进入「密钥管理」获取 Access KeySecret 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)其它相关文章!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜