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

 更新时间:2025年08月04日 09:51:10   作者:奇妙智能  
这篇文章主要介绍了SpringBoot对接七牛云存储的完整流程,涵盖注册账号、配置项目、文件上传/删除/下载及列表查询、前端集成等步骤,并强调了安全性、异常处理及扩展功能如图片处理等,需要的朋友可以参考下

以下是 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, 3600); // 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. ​​文件列表查询​​

遍历存储空间中的文件(分页处理):

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);
    }
});

​六、注意事项​

​文件大小限制​

  • application.yml 中配置:
spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 50MB

​异常处理​

  • 添加全局异常处理器,捕获七牛云 SDK 抛出的 QiniuException

​安全性​

  • 敏感操作(如删除)需添加权限校验。
  • 临时下载链接建议设置短有效期。

通过以上步骤,即可实现 Spring Boot 与七牛云存储的完整对接,支持文件上传、下载、删除及列表查询等核心功能。实际开发中可根据需求扩展图片处理(如缩略图)、水印添加等高级功能。

以上就是Spring Boot对接七牛云存储的详细步骤和流程的详细内容,更多关于Spring Boot对接七牛云存储的资料请关注脚本之家其它相关文章!

相关文章

  • Java StringBuffer类与StringBuilder类用法实例小结

    Java StringBuffer类与StringBuilder类用法实例小结

    这篇文章主要介绍了Java StringBuffer类与StringBuilder类用法,结合实例形式总结分析了Java StringBuffer类与StringBuilder类的功能、原理及添加、删除、替换、截取等操作实现技巧,需要的朋友可以参考下
    2019-03-03
  • Spring Security在标准登录表单中添加一个额外的字段

    Spring Security在标准登录表单中添加一个额外的字段

    这篇文章主要介绍了Spring Security在标准登录表单中添加一个额外的字段,我们将重点关注两种不同的方法,以展示框架的多功能性以及我们可以使用它的灵活方式。 需要的朋友可以参考下
    2019-05-05
  • MybatisPlus使用queryWrapper如何实现复杂查询

    MybatisPlus使用queryWrapper如何实现复杂查询

    这篇文章主要介绍了MybatisPlus使用queryWrapper如何实现复杂查询,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。
    2022-01-01
  • SpringBoot+layui实现文件上传功能

    SpringBoot+layui实现文件上传功能

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。这篇文章主要介绍了SpringBoot+layui实现文件上传,需要的朋友可以参考下
    2018-09-09
  • java 实现MD5加密算法的简单实例

    java 实现MD5加密算法的简单实例

    这篇文章主要介绍了java 实现MD5加密算法的简单实例的相关资料,这里提供实例帮助大家应用这样的加密算法,需要的朋友可以参考下
    2017-09-09
  • Java JFinal框架中实现添加定时任务功能详解

    Java JFinal框架中实现添加定时任务功能详解

    这篇文章主要为大家详细介绍了如何在JFinal框架项目中添加定时任务的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-02-02
  • 详解Spring-bean的循环依赖以及解决方式

    详解Spring-bean的循环依赖以及解决方式

    这篇文章主要介绍了详解Spring-bean的循环依赖以及解决方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • JDK + Maven +IDEA 安装配置一条龙教程(2025 最新)

    JDK + Maven +IDEA 安装配置一条龙教程(2025 最新)

    这篇文章主要介绍了JDK + Maven +IDEA安装配置的相关资料,通过一个简单的HelloWorld示例展示了如何在IDEA中创建和运行Java项目,文中给出了详细的图文教程,需要的朋友可以参考下
    2025-11-11
  • Java jpa外连接查询join案例详解

    Java jpa外连接查询join案例详解

    这篇文章主要介绍了Java jpa外连接查询join案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • java实现俄罗斯方块小程序

    java实现俄罗斯方块小程序

    这篇文章主要为大家详细介绍了java实现俄罗斯方块,在eclipse环境下编写的俄罗斯方块小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06

最新评论