springboot整合七牛云对象存储

一、测试

注册七牛云账号,并进行邮箱绑定和实名认证。

七牛云每个月送10G完全够我们开发

创建一个空间

存储区域哪里离你近选哪里,访问控制一定要公开。

创建完成后,后期上传的静态资源,可以根据域名+文件名直接访问,自定义域名必须是备案域名

默认送一个测试域名,在上图位置

找到秘钥管理

AK,SK是我们访问要用到的

在文档中找到开发者中心

复制依赖并导入

在测试类编写新方法

//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.region0());
cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本
//...其他参数参考类注释

UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String accessKey = "your access key";
String secretKey = "your secret key";
String bucket = "your bucket name";
//如果是Windows情况下,格式是 D:\qiniu\test.png
String localFilePath = "/home/qiniu/test.png";
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = null;

Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);

try {
    Response response = uploadManager.put(localFilePath, key, upToken);
    //解析上传成功的结果
    DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
    System.out.println(putRet.key);
    System.out.println(putRet.hash);
} catch (QiniuException ex) {
    Response r = ex.response;
    System.err.println(r.toString());
    try {
        System.err.println(r.bodyString());
    } catch (QiniuException ex2) {
        //ignore
    }
}

填入AK,SK,和你的空间名即可运行测试

如果遇到如下报错

{ResponseInfo:com.qiniu.http.Response@ba4f370,status:400, reqId:XhcAAACBZ4c1k18X, xlog:X-Log, xvia:, adress:upload.qiniup.com/xxx.xxx.xxx.xxx:xxx, duration:0.449000 s, error:incorrect region, please use up-z2.qiniup.com, bucket is: xxx}

这是因为区域不一样,更改配置信息

Configuration cfg = new Configuration(Zone.zone2());

Zone.zoneX()看please use up-zX是多少。

运行成功后可以看到存储区域多出了文件

打开外链可以访问(域名+文件名)

二、整合

导入依赖

<!--七牛云上传-->
    <dependency>
      <groupId>com.qiniu</groupId>
      <artifactId>qiniu-java-sdk</artifactId>
      <version>7.2.11</version>
    </dependency>
 
    <!-- 七牛云依赖Gson -->
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.8.6</version>
    </dependency>

配置yml

oss:
  qiniu:
    domain: qtxxxxxxxx.hn-xxx.xxxxx.com # 访问域名(默认使用七牛云测试域名)
    accessKey: Gn0uwxxxxxxxxxxxxxxxxxxxxy3GEVmZqR58ed # 公钥 刚才的AK
    secretKey: hs-ScVOxxxxxxxxxxxo0yG33uHm8_NkmnKy # 私钥 刚才的SK
    bucketName: officxxxxxxxxxxicture  #存储空间名称

编写配置类

package com.qingyun.gulimall.product.config;

import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;


@Data
@Component
public class QiNiuYunConfig {
    /**
     * 七牛域名domain
     */
    @Value("${oss.qiniu.domain}")
    private String qiniuDomain;
    /**
     * 七牛ACCESS_KEY
     */
    @Value("${oss.qiniu.accessKey}")
    private String qiniuAccessKey;
    /**
     * 七牛SECRET_KEY
     */
    @Value("${oss.qiniu.secretKey}")
    private String qiniuSecretKey;
    /**
     * 七牛空间名
     */
    @Value("${oss.qiniu.bucketName}")
    private String qiniuBucketName;
}

后续继续编写Service,实现类,Controller即可正常使用

经验分享 程序员 微信小程序 职场和发展