七牛云对象存储 Java使用
文章目录
- 对象存储服务简介
- 产品优势
- 核心功能及服务
- 创建对象存储空间
- 上传文件测试
- Java SDK简介
- 使用SDK上传文件
- 下载文件测试
对象存储服务简介
七牛云海量存储系统(KODO)是自主研发的非结构化数据存储管理平台,支持中心和边缘存储。平台经过多年大
规模用户验证已跻身先进技术行列,并广泛应用于海量数据管理的各类场景。
详细介绍参考官网:https://www.qiniu.com/products/kodo
产品优势
- 高可靠 :业界领先的纠删码存储方案,能够提供高达 11 个 9 的数据可靠性。跨数据中心的副本冗余,能够保障服务的超高可用性。
- 低成本 :无需前期投入。七牛云对象存储按需使用、按需付费的便捷性,能够有效避免存储及带宽资源的闲置浪费。
- 存储加速 :边缘存储可充分利用可用链路带宽,数据在边缘节点上传和下载可平均提速 60% 以上。
- 易扩展 :利用七牛云对象存储,您的存储空间无上限的同时也无需担心扩容问题。您能够实现存储需求的弹性伸缩,从而提高业务灵活性。
- 数据智能化 :与七牛云其他产品紧密协同,提供标准 HDFS 访问方式,为大数据和机器学习的海量高速读写场景进行了大量优化。
- 边缘计算 :就近集成边缘计算及边缘缓存服务,边缘存储节点具备本地数据处理能力。
核心功能及服务
- 多媒体数据处理:基于对象存储,您可以一站式地完成图片处理和音视频处理
- 镜像存储 :镜像存储适用于迁移原有业务系统的已有数据。可以帮助用户实现无缝数据迁移,迁移过程中并不影响原有业务系统的访问。
- 上传/下载 :针对不同的上传/下载场景,七牛云提供了丰富的API接口和工具供用户使用,同时支持服务端上传和客户端直传,并提供加速服务。
- 灵活部署 :同时支持在七牛云边缘节点和客户侧边缘节点部署边缘存储服务。
- 多级备份 :提供边缘和中心多级服务备份。
- 边缘安全 :通信加密,及时脱敏,边缘存储数据具备网银级安全可靠性。
创建对象存储空间
1.注册七牛云账号:https://portal.qiniu.com/signup
2.开通对象存储服务:https://www.qiniu.com/products/kodo
3.新建存储空间:https://portal.qiniu.com/bucket/create
选择服务器所在区域,访问控制方式。
公开空间可实现无需认证即可下载空间中的文件。
4.创建成功,获取融合 CDN 测试域名:下载文件时需要使用此域名
5.获取七牛云服务秘钥:https://portal.qiniu.com/user/key
上传文件测试
官方提供了Java SDK来方便开发。
Java SDK简介
使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云上。无论您的网络应用
是一个网站程序,还是包括从云端(服务端程序)到终端(手持设备应用)的架构服务或应用,通过七牛云及其
SDK,都能让您应用程序的终端用户高速上传和下载,同时也让您的服务端更加轻盈。
Java SDK 属于七牛服务端SDK之一,主要有如下功能:
- 提供生成客户端上传所需的上传凭证的功能
- 提供文件从服务端直接上传七牛的功能
- 提供对七牛空间中文件进行管理的功能
- 提供对七牛空间中文件进行处理的功能
- 提供七牛CDN相关的刷新,预取,日志功能
详细内容参考官网:https://developer.qiniu.com/kodo/sdk/1239/java
使用SDK上传文件
1.在项目中引入依赖,在common工程添加以下依赖。
<dependency><groupId>com.qiniu</groupId><artifactId>qiniu-java-sdk</artifactId><version>7.2.25</version>
</dependency>
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.2</version>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version>
</dependency>
2.在Common工程下编写七牛云的工具类QiniuUtils
package com.shanjupay.common.util;import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import com.qiniu.util.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.UUID;/**七牛云测试工具类* @author Administrator* @version 1.0**/
public class QiniuUtils {}
3.将七牛云的AccessKey/SecretKey和存储空间名配置到代码中:
public static String accessKey = ""; public static String secretKey = ""; public static String bucket = "";
- 调用SDK上传文件
参考官方提供的方法,这里测试字节数组上传方法:
private static final Logger LOGGER = LoggerFactory.getLogger(QiniuUtils.class);//测试文件上传private static void testUpload(){//构造一个带指定 Region 对象的配置类,指定存储区域,和存储空间选择的区域一致Configuration cfg = new Configuration(Region.huabei());
//...其他参数参考类注释UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传String accessKey = "n51gh8mN9lq2YtomTPThBIB2yGbh";String secretKey = "3A4nj6RlwRxRbjXStV5Rqb_g";String bucket = "ju-test2";
//默认不指定key的情况下,以文件内容的hash值作为文件名String key = UUID.randomUUID().toString()+".png";FileInputStream fileInputStream = null;try {String filePath = "C:\\Users\\Yang\\Desktop\\test1.jpg";fileInputStream = new FileInputStream(new File(filePath));//得到本地文件的字节数组byte[] bytes = IOUtils.toByteArray(fileInputStream);
// byte[] uploadBytes = "hello qiniu cloud".getBytes("utf-8");//认证Auth auth = Auth.create(accessKey, secretKey);//认证通过后得到token(令牌)String upToken = auth.uploadToken(bucket);try {//上传文件,参数:字节数组,key,token令牌//key: 建议我们自已生成一个不重复的名称Response response = uploadManager.put(bytes, 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}}} catch (IOException ex) {//ignore}}
5.编写测试方法上传文件
public static void main(String[] args) throws UnsupportedEncodingException {//上传测试QiniuUtils.testUpload();}
6.上传测试完成,通过七牛云平台查看上传的文件:https://portal.qiniu.com/bucket,选择上传使用的存储空间查看内容
没有问题!
下载文件测试
参考官方文档:
1、公开空间
对于公开空间,文件的访问链接是将空间绑定的域名加文件名称组成。
链接地址为:http://r9igvk8y8.hb-bkt.clouddn.com/9fb266d6-530f-4cfd-bbab-ec23a528f069.png
2、私有空间
私有空间主要存储一些不公开的文件,如果要下载文件则需要通过sdk生成文件访问地址。
首先需要按照公开空间的文件访问方式构建对应的公开空间访问链接,然后再对这个链接进行私有授权签名。
测试代码如下:
//获取文件url
private static void testGetFileUrl() throws UnsupportedEncodingException {String fileName = "9fb266d6-530f-4cfd-bbab-ec23a528f069.png";String domainOfBucket = "http://r9ig8y8.hb-bkt.clouddn.com";String encodedFileName = URLEncoder.encode(fileName, "utf-8").replace("+", "%20");String publicUrl = String.format("%s/%s", domainOfBucket, encodedFileName);String accessKey = "n51gh8mN9dOinBeShomTPThBIB2yGbh";String secretKey = "3A4nj6RVruB_xETYUuRbjXStV5Rqb_g";Auth auth = Auth.create(accessKey, secretKey);long expireInSeconds = 3600;//1小时,可以自定义链接过期时间String finalUrl = auth.privateDownloadUrl(publicUrl, expireInSeconds);System.out.println(finalUrl);
}
1.编写测试方法
public static void main(String[] args) throws UnsupportedEncodingException {//下载测试QiniuUtils.testGetFileUrl();
}
2.执行测试返回下载地址
3.在浏览器访问下载地址,测试文件是否正确
没问题!
七牛云对象存储 Java使用相关推荐
- Java实现将文件(图片)上传到七牛云对象存储,并实现下载和删除功能
引言:在搭建项目时如果把上传的文件存储在该项目运行的主机上,会导致访问该项目时加载非常缓慢,因此需要对象存储.并且对象存储具有网站数据动静分离,大幅提升网页性能,储存节点多,支持跨地域实时同步,成本低 ...
- SpringBoot2.x 集成 七牛云对象存储Kodo
本文主要对SpringBoot2.x集成七牛云对象存储Kodo进行简单总结,其中SpringBoot使用的2.4.5版本. 一.七牛云对象存储Kodo简介 七牛云对象存储Kodo是七牛云提供的高可靠. ...
- 使用z-file和七牛云对象存储构建个人网盘
最近想构建一个个人网盘玩玩,用来存储些资源.这里使用云服务器+zfile+七牛云对象存储进行搭建. 租用云服务器 首先需要在常用的云服务网站买一个云服务器,如阿里云.腾讯云等.这里不说该怎么租用和搭建 ...
- 七牛云对象存储使用指南
对象存储服务简介 七牛云海量存储系统(KODO)是自主研发的非结构化数据存储管理平台,支持中心和边缘存储.平台经过多年大规模用户验证已跻身先进技术行列,并广泛应用于海量数据管理的各类场景. 详细介绍参 ...
- 微信小程序使用七牛云对象存储保存图片和文件
先给大家看效果图,如下: 一.开通七牛云对象存储服务(免费的) 官网:https://www.qiniu.com/,实名认证后,创建一个空间,用于保存文件 二.获取 AccessKey和SecretK ...
- 七牛云对象存储绑定个人域名
七牛云对象存储绑定个人域名 七牛云介绍 主题说明 过程介绍 登录病创建存储空间 创建完成后 增加域名管理 查看域名解析 chame 域名 去域名管理页面 增加chame解析(我的是阿里云) 七牛云介绍 ...
- WordPress七牛云对象存储免费插件WPQiNiu
有些站长喜欢使用七牛云来加速 WordPress 站点的访问速度,平时需要手工将需要加速的静态文件或图片上传到七牛云存储空间才行.为了提供效率,boke112 联盟建议大家安装这款 WordPre ...
- 一个集成阿里云、腾讯云、七牛云对象存储的SDK
概述 一个集成阿里云.腾讯云.七牛云对象存储的SDK An SDK integrating Alibaba cloud, Tencent cloud and qiniu cloud object st ...
- JAVA——实现七牛云对象存储Region对象采用配置方式生成解决方案
官方文档 对象存储 Java SDK 更新时间:2019-12-16 17:24:24 解决方案 @Value("${qiniu.region}")private String r ...
最新文章
- linux开机启动rsync,【Linux】rsync同步文件 程序自启动
- 搭建项目前端页面环境
- mysql插入实现存在更新_mysql 记录不存在时插入 记录存在则更新的实现方法
- 网页嵌入pdf、在线预览pdf工具及插件(转)
- Linux基础(13)文本查找利器find的使用方法
- jmeter之使用代理录制脚本
- 【竖排日语OCR识别】如何识别图片上竖排的日语 ?如何识别图片上横排的日语?如何将竖排日语转横排日语,下面说清楚方法
- 如何安装火狐浏览器插件
- 抖音短视频无水印下载方法
- 苹果8p录像鸿蒙,录屏怎么录苹果8p | 手游网游页游攻略大全
- ✖ subject may not be empty [subject-empty]
- canvas轨迹运动, 利用向量实现点匀速运动
- Leetcode(24)——两两交换链表中的节点
- 2小时学会CSS,完成网页制作!
- iOS最强下片神器,免费不限速,秒杀其他下载神器!
- 广陵郡(堂)追宗溯祖与世系排行
- 自动化测试框架(从robotframework到hyrobot(黑羽robot) python语言)
- 重视苹果和谷歌的警告信
- labelmx商品条码编制软件
- 无线传感器网络(特点,挑战和应用)
热门文章
- STM8S PD7 TLI外部高级中断
- Access mysql oracle vfp C# vb6.0 VB.net java php delphi jsp asp.net人事管理系统成品源码
- ## 全A市场个股历史的逐笔数据
- 【Python】如何做代码静态分析?
- 中秋遇到mysql死锁怎么办
- cocos2d-x 3.x 图形学渲染系列六
- ipad触控笔有必要买原装?Ipad可用的触控笔推荐
- 观察者模式学习笔记(详细)
- Sophus编译出错:lvalue required as left operand of assignment
- 一起网PHP编码规范(征求意见稿)