java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring Boot对接七牛云存储

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

作者:奇妙智能

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

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

​​一、前期准备​​

​注册七牛云账号​

​创建存储空间(Bucket)​

​​二、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);
    }
});

​六、注意事项​

​文件大小限制​

spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 50MB

​异常处理​

​安全性​

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

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

您可能感兴趣的文章:
阅读全文