七牛云产品使用介绍之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);// 文件上传@Testpublic 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就不会有费用哦

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易货:一种新型的商业模式

随着经济的发展和社会的进步&#xff0c;人们对于交易的需求和方式也在不断变化。传统的商业模式已经无法满足人们对于多元化、个性化、高效的需求。在这样的背景下&#xff0c;易货模式逐渐走进人们的视野&#xff0c;成为一种新型的商业模式。 易货模式是一种以物换物的交易方…

提升企业人效,从精细化考勤管理开始

过去&#xff0c;许多企业提到考勤管理&#xff0c;只能关联到打卡、请假、算薪这些简单的事务性流程。随着越来越多企业希望通过数字化转型来提升运营效率&#xff0c;实现精细化人员管理。考勤数据的作用也不再仅限于算薪&#xff0c;而是成为了企业分析人效的关键因子。因此…

产品经理的具体工作职责有什么?

产品经理是现代企业中非常重要的一种职位&#xff0c;其工作职责也非常广泛和复杂。产品经理需要在市场、用户、技术等多个方面进行综合考虑&#xff0c;为企业开发出具有竞争力的产品&#xff0c;从而推动企业的发展。下面我们将详细介绍产品经理的具体工作职责。 一、市场调研…

如何正确复制CSDN文章到自己的博客

1.csdn 文章页面&#xff0c;按f12打开浏览器开发者工具 2.按ctrl f 找 "article_content" 3.在该元素源代码上右键 “Copy”->“Copy element” 4.新建一个txt文件,把你粘贴的东西复制进去,然后再把文件名的后缀改为html,然后打开html文件,把里面的内容ctrlA全部…

PHP如何持续监听Redis的消息订阅并推送到前端?

PHP如何持续监听Redis的消息订阅并推送到前端&#xff1f; 概述: 在许多Web应用程序中&#xff0c;实时推送消息是很常见的需求。当我们需要向前端实时发送消息时&#xff0c;往往会使用轮询或长轮询的方式去获取最新数据。但这种方式对服务器资源的消耗较大&#xff0c;同时响…

Linux 中 .tar 和 tar.gz 的区别

1、前言 有时候你会发现&#xff0c;即便是有些拥有 3 年左右工作经验的运维或开发工程师对 .tar 和 .tar.gz 的区别并不是很清楚。.tar 和 .tar.gz 是在 Linux 系统中用于打包和压缩文件的两种常见格式。它们之间的主要区别在于压缩算法和文件扩展名。 2、区别 .tar .tar 是…

电商领域的三大沉疴难题?实在智能RPA来帮你药到病除!

在电商市场规模迅速扩大的当下&#xff0c;厂家们为了保持自身的竞争力&#xff0c;纷纷走上了数智化转型的道路&#xff0c;明白学会使用自动化利器才是制胜之道。 如今从产业的生产线到运营商、物流运输、商品售前、商品售后&#xff0c;实在RPA在电商平台的应用已经十分广泛…

Less精简直接上手,纯干货教程

目录 介绍 安装插件 入门使用测试 ​编辑 less变量 介绍 less作为一门CSS扩展语言&#xff0c;也就是说CSS预处理器。&#xff08;Leaner Style Sheets&#xff09;简称less&#xff0c;它只不过是为css新增这些的功能&#xff0c;比如说&#xff1a;变量、函数、作用域等等…

java springboot测试类鉴定虚拟MVC运行值与预期值是否相同

好 上文java springboot在测试类中构建虚拟MVC环境并发送请求中 我们模拟的MVC环境 发送了一个请求 我们这次需要 对比 预期值和运行值是否一直 这里 我们要用一个 MockMvcResultMatchers 他提供了非常多的校验类型 例如 请求有没有成功 有没有包含请求头信息 等等 这里 我们做…

焦炉加热系统简述

烟道吸力 焦炉负压烘炉分烟道的吸力会影响立火道温度&#xff0c;具体影响因素如下&#xff1a; 烟道吸力过大会导致热量被抽走&#xff0c;使立火道温度降低。烟道吸力不足会导致烟气在烘炉内停留时间过长&#xff0c;使热量无法充分利用&#xff0c;也会导致立火道温度降低…

数字IC基础:有符号数和无符号数加、减法的Verilog设计

相关阅读 数字IC基础https://blog.csdn.net/weixin_45791458/category_12365795.html?spm1001.2014.3001.5482 本文是对数字IC基础&#xff1a;有符号数和无符号数的加减运算一文中的谈到的有符号数加减法的算法进行Verilog实现&#xff0c;有关算法细节请阅读原文&#xff0…

Leetcode—876.链表的中间结点【简单】

2023每日刷题&#xff08;三十三&#xff09; Leetcode—876.链表的中间结点 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* middleNode(struct ListNode* head) {struct ListNod…

DolphinDB 浙商银行 | 第二期现场培训圆满结束

自 DolphinDB 高级工程师计划开展以来&#xff0c;客户们纷纷响应&#xff0c;除了定期收看我们每周三开设的线上公开课外&#xff0c;也有部分客户报名参加了 “总部工程师培训计划” 。 上周&#xff0c;我们迎来了总部培训的第二期学员&#xff1a;来自浙商银行的4位策略研…

K8S部署mongodb-sharded-cluster(7.0.2)副本分片

添加源 helm repo add bitnami https://charts.bitnami.com/bitnami指定版本拉取 helm pull --repo https://charts.bitnami.com/bitnami mongodb-sharded --version 7.0.5安装时选择SCRAM-SHA-1默认是SCRAM-SHA-256 helm install -n prod mymongodb mongodb-sharded --value…

如何用CHAT分析网络流行语的构成特点及趋势?

问CHAT&#xff1a;请分析下网络流行语的构成特点及趋势 CHAT回复&#xff1a; 网络流行语的构成特点&#xff1a; 1. 新颖性&#xff1a;网络流行语象征着新潮的概念、思想和观点&#xff0c;它们新颖独特且易于传播。 2. 深入人心的设定&#xff1a;网络流行语通常是由大众…

浅谈能源智能管理系统在大学高校中的应用

安科瑞 华楠 摘要&#xff1a;结合深圳南方科技大学能效系统工程设计实例&#xff0c;针对校园中电耗、热量消耗、冷量消耗及水资源消耗数据的采集、传输、分析管理系统&#xff0c;分析了系统中的水、电、气在高校中的能耗分布&#xff0c;并阐述了节能应用方案&#xff0c;可…

Imaris 卡退,是不是缓存盘没有设置好?

必须记录一下&#xff0c;从Imaris哔哩哔哩官方视频上学到的&#xff0c;如何设置缓存位置&#xff0c;尤其是做3D视频的时候。 但是隔一段时间就忘记&#xff0c;找不到当时的哔哩哔哩视频 这里记一下 如果是空间比较小的C盘&#xff0c;可以改成一个空间大一点的位置。 把缓…

机器学习入门(第三天)——K近邻(物以类聚)

K-nearest neighbor 知识树 怎么区分红豆绿豆&#xff1f; How to distinguish red beans and green beans? 之前我们构造了一个超平面来解决这个问题&#xff0c;既然超平面可以切分&#xff0c;是不是红豆之间和绿豆之间有着某种关联。即&#xff1a;物以类聚。 如果一个…

【Linux进阶之路】动静态库

文章目录 回顾一. 静态库1.代码传递的方式2.简易制作3.原理 二. 动态库1.简易制作2.基本原理 尾序 回顾 前面在gcc与g的使用中&#xff0c;我们简单的介绍了动态库与静态库的各自的优点与区别&#xff1a; 动态链接库&#xff0c;也就是所有的程序公用一份代码,虽然方便省空间&…

Elasticsearch:FMA 风格的向量相似度计算

作者&#xff1a;Chris Hegarty 在 Lucene 9.7.0 中&#xff0c;我们添加了利用 SIMD 指令执行向量相似性计算的数据并行化的支持。 现在&#xff0c;我们通过使用融合乘加 (Fused Mulitply-Add - FMA) 进一步推动这一点。 什么是 FMA 乘法和加法是一种常见的运算&#xff0c;…