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即可正常使用