七牛云产品使用介绍之Kodo篇

        前不久刚参加完七牛云举办的第二届1024创作节(虽然只是我单方面的被各方大佬碾压)

        赛题是网页短视频应用开发,要求作品中使用七牛云的相关产品,于是我决定分享下七牛云产品的使用(这么好用的产品很难忍住不想分享的心情😝😝😝)

        主要分享下新手如何快速使用,以及仅仅进行想进行测试的小伙伴怎么使用能不产生计费,不仔细看文档随便瞎使用可能会产生计费

【温馨提示】:要使用下面的产品记得先注册账号,绑定邮箱和实名认证哦

安装SDK

七牛云很贴心的帮我们封装好了一个工具包,里面提供各种的类和方法来让我们实现快速对接、开发

<!--七牛云SDK-->
<dependency>
    <groupId>com.qiniu</groupId>
    <artifactId>qiniu-java-sdk</artifactId>
    <version>[7.7.0, 7.10.99]</version>
</dependency>

对象存储 Kodo

作用:文件存储,但不仅仅是文件存储,kodo可以跟七牛的其他多种产品结合使用,实现1+1>3的效果

首先要去kodo控制台:https://portal.qiniu.com/kodo/bucket?ref=www.qiniu.com,创建一个存储桶(bucket),bucket是存储文件的容器

点击新建空间,输入空间名称,选择一个区域,选择公开空间(私有也可以,刚入门还是公开吧,以后还能改)

创建完了bucket,就可以开始写我们可爱的代码了,咦嘻嘻嘻

先给完整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是精髓,代表着你存储空间的所在的区域,如果填错了,会报错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就不会有费用哦

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙域、白泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值