前不久刚参加完七牛云举办的第二届1024创作节(虽然只是单方面的被各方大佬碾压)
赛题是网页短视频应用开发,要求作品中使用七牛云的相关产品,于是我决定分享下七牛云产品的使用(这么好用的产品很难忍住分享的心情😝😝😝)
主要分享下新手如何快速使用,以及仅仅进行想进行测试的小伙伴怎么使用会不产生计费,不仔细看文档随便瞎使用可能会产生计费的哦
要使用下面的产品记得先注册账号,绑定邮箱和实名认证哦
安装SDK
七牛云很贴心的帮我们封装好了一个工具包,里面提供各种的方便的类和方便方便我们快速开发
<!--七牛云SDK-->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.7.0, 7.10.99]</version>
</dependency>
对象存储 Kodo
作用:文件存储,但不仅仅是文件存储,kodo可以跟下面介绍的3种服务配合使用,实现1加1加1加1等于1024的效果
使用的话先去kodo的控制台创建一个存储桶(bucket),bucket是存储你文件的容器
来到kodo控制台:https://portal.qiniu.com/kodo/bucket?ref=www.qiniu.com
点击新建空间,输入空间名称,选择一个区域,选择公开空间(私有也可以,刚入门还是公开吧,以后还可以改)
创建完了空间,就可以开始写我们可爱的代码了,咦嘻嘻嘻
先给demo代码,再解释含义
public class UploadToQiniu {
String bucket = "bucket名";
String AccessKey = "你的ak";
String SecretKey = "你的sk";
Auth auth = Auth.create(AccessKey, SecretKey);
// 文件上传
@Test
public void uploadV2() {
Configuration cfg = new Configuration(Region.region2());
cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;
cfg.useHttpsDomains = true;
cfg.resumableUploadMaxConcurrentTaskCount = 3;
String localFile = "/Users/lixianhe/Downloads/86dac233-65d5-4b38-b40f-cb23dd618489.jpg";
InputStream is = null;
try {
is = new FileInputStream(localFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String key = "a.png";
String upToken = auth.uploadToken(bucket, key, 3600L, null);
UploadManager uploadManager = new UploadManager(cfg);
Response response;
try {
response = uploadManager.put(is, key, upToken, null, null);
// 解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println("key: " + putRet.key);
System.out.println("hash: " + putRet.hash);
} catch (QiniuException e) {
System.out.println(e.response.toString());
}
}
}
接下来逐行解释代码
String bucket = "bucket名";
String AccessKey = "你的ak";
String SecretKey = "你的sk";
Auth auth = Auth.create(AccessKey, SecretKey);
首先:bucket = <你刚才创建存储空间的名称>
那下面的ak和sk又是啥呢?怎么获取呢?
答:ak和sk是生成鉴权的,ak、sk非常重要,不能泄露给别人,如果泄露意味着你账号的最高权限泄露,别人可以拿着你的ak、sk疯狂调用七牛的服务,而费用算在你头上
获取ak、sk的位置在这里:https://portal.qiniu.com/developer/user/key
Auth对象生成,参数传入了ak和sk,也就是这个Auth代表着你的账号
Configuration cfg = new Configuration(Region.region2());
// 指定分片上传版本为V2
cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;
// 设置分片上传并发,1:采用同步上传;大于1:采用并发上传
cfg.resumableUploadMaxConcurrentTaskCount = 3;
这个是配置对象,创建配置对象的使用,传入参数Region.region2()
【重点】:这个region2是精髓,代表着你存储空间的所在的区域,如果填错了,也及时你的空间和填写的region不匹配,会报错incorrect region,一定确认区域正确
华东 | Region.region0() , Region.huadong() |
华北 | Region.region1() , Region.huabei() |
华南 | Region.region2() , Region.huanan() |
北美 | Region.regionNa0() , Region.beimei() |
东南亚 | Region.regionAs0() , Region.xinjiapo() |
String localFile = "/Users/lixianhe/Downloads/86dac233-65d5-4b38-b40f-cb23dd618489.jpg";
InputStream is = null;
try {
is = new FileInputStream(localFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
这个比较容易理解,将本地文件转为字节流
String key = "a.png";
String upToken = auth.uploadToken(bucket, key, 3600L, null);
【重点】:生成上传token
我们定睛一看,这个方法是Auth对象里面的方法,也就是生成这个token需要使用ak、sk
uploadToken的四个参数分别是:bucket名称,key名称,上传的token的有效期,上传策略
bucket我们了解了,key又是啥呢?key就是全路径(目录+文件名),也就是文件在存储空间的唯一标识
第三个参数:比较好理解,你生成的上传token只在有效期内可以使用,也就是超过这个时间token失效,单位秒
第四个参数:虽然我传的是null,但是这个参数"非常非常非常强大",不详细说了,叫上传策略
详细看:https://developer.qiniu.com/kodo/1206/put-policy
UploadManager uploadManager = new UploadManager(cfg);
Response response;
try {
response = uploadManager.put(is, key, upToken, null, null);
// 解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println("key: " + putRet.key);
System.out.println("hash: " + putRet.hash);
} catch (QiniuException e) {
System.out.println(e.response.toString());
}
创建 UploadManager 对象,传入配置类,put方法:是真正执行上传的方法
Response对象,上传请求的响应的对象
DefaultPutRet对象,上传会默认返回hash和key,通过这个对象解析hash和key
到此为止,一个文件的上传就完成了,距离年薪百万又近了一步
最后是计费方面的提醒:七牛云上传文件是不计费,但是存储量需要计费,每月10GB免费存储额度,只要不用超过10GB就不会有费用哦