七牛云产品使用介绍之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可以跟下面介绍的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就不会有费用哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/176312.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java项目之木里风景文化管理平台(ssm+vue)

项目简介 木里风景文化管理平台实现了以下功能&#xff1a; 前台功能&#xff1a;用户进入系统可以实现首页&#xff0c;旅游公告&#xff0c;景区&#xff0c;景区商品&#xff0c;景区美食&#xff0c;旅游交通工具&#xff0c;红黑榜&#xff0c;个人中心&#xff0c;后台…

Python生成exe文件

Python如何生成exe文件 在终端执行 pip install pyinstaller 在终端执行pyinstaller E:\fund_data\GetFund.py&#xff0c;运行结束后会在D:\Python\Python311\Scripts\dist\目录下生成GetFund.exe文件 3.双击exe文件运行&#xff0c;如果未出现预期结果&#xff0c;可以把e…

Autoware.universe部署06:使用DBC文件进行UDP的CAN通信代码编写

目录标题 一、安装DBC文件编辑工具VectorCANdb二、编写DBC文件2.1 CAN通信协议2.2 编写DBC文件2.2.1 根据CAN协议设置signals2.2.2 设置报文2.2.3 建立节点 三、根据DBC文件编写ROS2驱动程序四、实际通信调试 根据CAN协议编写DBC文件&#xff0c;通过DBC文件编写ROS2包进行UDP通…

基于C#实现树状数组

有一种数据结构是神奇的&#xff0c;神秘的&#xff0c;它展现了位运算与数组结合的神奇魅力&#xff0c;太牛逼的&#xff0c;它就是树状数组&#xff0c;这种数据结构不是神人是发现不了的。 一、概序 假如我现在有个需求&#xff0c;就是要频繁的求数组的前 n 项和&#x…

jQuery【菜单功能、淡入淡出轮播图(上)、淡入淡出轮播图(下)、折叠面板】(五)-全面详解(学习总结---从入门到深化)

目录 菜单功能 淡入淡出轮播图(上) 淡入淡出轮播图(下) 折叠面板 菜单功能 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><…

5分钟制作可直接导入GPTs知识库中的自动爬虫

它能从一个或多个网址爬取网站内容&#xff0c;然后生成JSON文件格式。这样爬取的内容可以直接导入到GPTs知识库中&#xff0c;方便你创建自定义知识库的GPTs。比如你有自己的网站或者资料库&#xff0c;但是整理起来太麻烦&#xff0c;就可以使用这个工具。 主要功能&#xf…

webshell之无扩展免杀

1.php加密 这里是利用phpjiami网站进行加密&#xff0c;进而达到加密效果 加密前&#xff1a; 查杀效果 可以看到这里D某和某狗都查杀 里用php加密后效果 查杀效果 可以看到这里只有D某会显示加密脚本&#xff0c;而某狗直接绕过 2.dezend加密 可以看到dezend加密的特征还是…

Java实现堆算法

堆是一种特殊的数据结构&#xff0c;它是一棵完全二叉树&#xff0c;且满足堆的性质&#xff1a;对于每个节点&#xff0c;它的值都不小于&#xff08;或不大于&#xff09;它的孩子节点的值。根节点的值就是堆中的最大值&#xff08;或最小值&#xff09;。 Java中提供了一个…

解决Spring Boot应用在Kubernetes上健康检查接口返回OUT_OF_SERVICE的问题

现象 在将Spring Boot应用部署到Kubernetes上时&#xff0c;健康检查接口/actuator/health返回的状态为{"status":"OUT_OF_SERVICE","groups":["liveness","readiness"]}&#xff0c;而期望的是返回正常的健康状态。值得注…

jetpack compose中实现丝滑的轮播图效果

写在前面 最近在翻Jetpack库&#xff0c;发现了DataStore&#xff0c;官方是这么说的&#xff1a; Jetpack DataStore 是一种数据存储解决方案&#xff0c;允许您使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。 …

听说90%的人都没搞定手撕协程池这道面试题!

特别的缘分 听说90%的人都没搞定手撕协程池这道面试题&#xff01; 能看到这篇文章一定是特殊的缘分&#xff0c;请务必珍惜&#xff0c;请详细看看吧&#xff0c;哈哈。 不止上图&#xff0c;最近 Go就业训练营 中不少小伙伴说&#xff0c;面试中碰到了好几次手撕协程池的问题…

Arcgis中通过函数实现字符串截取

效果 从字符串中提取最右侧的符号&#xff0c;如“/”后面的字符串 步骤 1、VB dim bbindexinstrrev( [WGCJ] ,"/")bbright( [WGCJ] ,len( [WGCJ] )- index )2、python def bb(aa):index(aa.rfind("/"))bbaa[index1:]return bb

《QT从基础到进阶·三十七》QWidget实现左侧导航栏效果

NavigationBarPlugin插件类实现了对左侧导航栏的管理&#xff0c;我们可以在导航栏插件中添加界面&#xff0c;并用鼠标点击导航栏能够切换对应的界面。 源码在文章末尾 实现效果如下&#xff1a; NavigationBarPlugin实现的接口如下&#xff1a; class NAVIGATIONBAR_EXP…

企业数字化建设诊断报告

市场竞争越来越激烈 不管是初创企业&#xff0c;还是面临转型的发展型企业 亦或是稳定发展突破瓶颈的传统企业 或多或少都面临着企业数字化建设的问题...... 联系亿达四方限时免费领取&#xff0c; “企业数字化建设诊断报告”。

C语言获取win11新版终端WindowsTerminal窗口句柄

随着Win11的普及&#xff0c;越来越多的人都能发现获取控制台窗口不能再使用以下两种传统方法了&#xff1a; HWND hwnd GetConsoleWindow();HWND hwnd FindWindowA("ConsoleWindowClass",NULL);那是因为win11换了新的终端窗口&#xff0c;叫做WindowsTerminal&am…

如何用CHAT写励志文章?

问CHAT&#xff1a;写一篇以《过了60岁要积极面对身体疾病的坎儿》为题目&#xff0c;写一篇300字励志文章 CHAT回复&#xff1a; 标题&#xff1a;《过了60岁要积极面对身体疾病的坎儿》 人生&#xff0c;有时会像一趟不期而遇的旅程&#xff0c;各自带着乐观或悲观、阳光或…

区间第k小数 (可持久化线段树、主席树)

题意&#xff1a;多次询问&#xff0c;每次询问某区间的第k小数。 可持久化线段树&#xff1a; 掺杂了一点前缀和的思想&#xff0c;对于每一个1 ~ i 的区间都建一个树&#xff0c;每个节点存的都是一个线段树&#xff0c;值存的是当前区间中初始数组按大小排序后[l, r]之间的…

生产订单自动下达

文章目录 1 Introduction2 Detail2.1 input MM02 3 Summary 1 Introduction Production order is released order by automation . We can set the material for it . The method is the detial . 2 Detail 2.1 input MM02 please choose work Scheduling please choose S…

算法分析-三壶谜题

一.题目需求 有一个充满水的8品脱的水壶和两个空水壶&#xff08;容积分别是5品脱和3品脱&#xff09;。 通过将水壶完全倒满水和将水壶的水完全倒空这两种方式&#xff0c;在其中的一个水壶中得到4品脱的水。 二、算法思想 1.算法分析 1.1. 采用的算法思想是将某个时刻水壶…

9.3 Windows驱动开发:内核解析PE结构节表

在笔者上一篇文章《内核解析PE结构导出表》介绍了如何解析内存导出表结构&#xff0c;本章将继续延申实现解析PE结构的PE头&#xff0c;PE节表等数据&#xff0c;总体而言内核中解析PE结构与应用层没什么不同&#xff0c;在上一篇文章中LyShark封装实现了KernelMapFile()内存映…