七牛云对象存储java使用

流楚丶格念      2022-04-02     278

关键词:

文章目录

对象存储服务简介

七牛云海量存储系统(KODO)是自主研发的非结构化数据存储管理平台,支持中心和边缘存储。平台经过多年大

规模用户验证已跻身先进技术行列,并广泛应用于海量数据管理的各类场景。

详细介绍参考官网:https://www.qiniu.com/products/kodo

产品优势

  1. 高可靠 :业界领先的纠删码存储方案,能够提供高达 11 个 9 的数据可靠性。跨数据中心的副本冗余,能够保障服务的超高可用性。
  2. 低成本 :无需前期投入。七牛云对象存储按需使用、按需付费的便捷性,能够有效避免存储及带宽资源的闲置浪费。
  3. 存储加速 :边缘存储可充分利用可用链路带宽,数据在边缘节点上传和下载可平均提速 60% 以上。
  4. 易扩展 :利用七牛云对象存储,您的存储空间无上限的同时也无需担心扩容问题。您能够实现存储需求的弹性伸缩,从而提高业务灵活性。
  5. 数据智能化 :与七牛云其他产品紧密协同,提供标准 HDFS 访问方式,为大数据和机器学习的海量高速读写场景进行了大量优化。
  6. 边缘计算 :就近集成边缘计算及边缘缓存服务,边缘存储节点具备本地数据处理能力。

核心功能及服务

  1. 多媒体数据处理:基于对象存储,您可以一站式地完成图片处理和音视频处理
  2. 镜像存储 :镜像存储适用于迁移原有业务系统的已有数据。可以帮助用户实现无缝数据迁移,迁移过程中并不影响原有业务系统的访问。
  3. 上传/下载 :针对不同的上传/下载场景,七牛云提供了丰富的API接口和工具供用户使用,同时支持服务端上传和客户端直传,并提供加速服务。
  4. 灵活部署 :同时支持在七牛云边缘节点和客户侧边缘节点部署边缘存储服务。
  5. 多级备份 :提供边缘和中心多级服务备份。
  6. 边缘安全 :通信加密,及时脱敏,边缘存储数据具备网银级安全可靠性。

创建对象存储空间

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之一,主要有如下功能:

  1. 提供生成客户端上传所需的上传凭证的功能
  2. 提供文件从服务端直接上传七牛的功能
  3. 提供对七牛空间中文件进行管理的功能
  4. 提供对七牛空间中文件进行处理的功能
  5. 提供七牛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 = "";
  1. 调用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.在浏览器访问下载地址,测试文件是否正确

没问题!

七牛云免费对象存储,并绑定到cloudreve中

...站的图库,这样对网站的访问效率也会提高。今天了解到七牛云有免费的对象存储可以使用,于是自己就是注册了账号,而且需要实名,一切完成后,就可以开通对象存储功能了下面是对象存储的免费额度,存储空间是10G,月流... 查看详情

django之集成七牛云对象存储(代码片段)

Python3+Django2.0集成“七牛云”对象存储(SDK文档地址:http://developer.qiniu.com/kodo/api/3928/error-responses)步骤1:  在七牛云中创建一个“存储空间”(需要实名认证,每月免费10GB)步骤2:  在“个人面板”-->“秘钥管理”中... 查看详情

2018最新七牛云存储8折充值优惠码

 2018刚刚开始,作为云存储行业领先的七牛云存储又推出优惠力度最大的充值优惠码:61d1fd4d。 该优惠码可重复多次使用,建议收藏。七牛优惠码是七牛云存储官方提供的,尽可能的会大客户降低成本的内部优惠码,想要... 查看详情

java实现七牛云文件或图片上传下载(代码片段)

文章目录一、准备工作1.1.为什么选择七牛云?1.2.七牛云注册二、java操作七牛云对象存储下载2.1.pom.xml引入依赖2.2.上传下载具体代码三、具体业务例子(七牛云做图片服务器--SpringBoot)3.1.pom.xml(此处继承上面的依赖多引入一个)3.2.创... 查看详情

ueditor上传图片到七牛云存储(formapi,java)

转:http://my.oschina.net/duoduo3369/blog/174655ueditor上传图片到七牛云存储ueditor结合七牛传图片七牛的试炼开发前的准备与注意事项说明Let‘srock与ueditor结合前的准备工作首先从表单开始生成token建立图片空间生成token上传流程集成ueditor... 查看详情

七牛云存储优惠码及使用方法8折

...件或是CDN镜像加速,而这些使用者中有一大部分是使用的七牛云存储,目前七牛针对标准用户免费提供存储空间10GB,免费每月下载流量10GB,免费每月PUT/DELETE10万次请求,免费每月GET100万次请求。如果你的流量比较大或者需要绑... 查看详情

dedecms织梦七牛云存储二次开发

DeDeCMS(织梦)整合七牛云储存的优势1、节省自身服务器带宽、流量、储存空间,因为使用七牛云前端JSSDK上传到七牛云。2、提高网站加载速度,因为大部分的流量由七牛云分发,减少了自身服务器带宽的占用,七牛云的CDN比普通... 查看详情

七牛云宣布华南机房存储空间降价,降幅达10%

尊敬的用户,您好!感谢您长期以来对七牛云的关注与厚爱。自成立以来,我们一直致力于为用户提供“简单可信赖”的云服务。七牛云以存储起家,在存储方面先人一步,不断推陈出新。随着我们自主研发的海量存储系统不断... 查看详情

flask-web——对象存储——图片上传存储传输等(代码片段)

1.七牛云存储需求在项目中,如用户头像、文章图片等数据需要使用文件存储系统来保存方案自己搭建文件系统服务选用第三方对象存储服务我们在项目中使用七牛云对象存储服务http://www.qiniu.com。2.使用注册新建存储空间使... 查看详情

thinkphp6上传图片七牛云如何上传文件到七牛云对象储存cos

参考技术AThinkPHP6如何上传图片七牛云,如何上传文件到七牛云对象储存cos,总所周知图片是特别消耗网站带宽的,个人网站将图片上传至七牛云才能显著提升网站的响应速度,手把手交大家如何上配置ThinkPHP6上传文件至七牛云.然后我... 查看详情

wp集成七牛云存储(原创)

  借助:七牛镜像存储WordPress插件https://wordpress.org/plugins/wpjam-qiniu/安装本插件1.4.5及以上版本,请先安装并激活WPJAMBASIC插件。如果是使用1.4.5以下版本,WPJAMBASIC插件已包含七牛插件,如果启用WPJAMBASIC插件,请先停用插件... 查看详情

95折七牛云存储账户充值优惠码包括使用方法

目前七牛针对标准用户(点击注册)免费提供存储空间10GB,免费每月下载流量10GB,免费每月PUT/DELETE10万次请求,免费每月GET100万次请求。如果你的流量比较大或者需要绑定自己的顶级域名(现在七牛绑定自己的域名需要用户充... 查看详情

openwrite编辑器如何配置七牛云图床

...作分享,原文链接:https://www.jianshu.com/p/29f33ca6e4911.配置七牛云1.1通过七牛云链接购买七牛云对象存储,一般官方免费10G。1.2安装对象存储1.2.1如下界面找到对象存储1.2.2创建空间2.配置域名管理这一步非常重要,而且有坑......2.1... 查看详情

前端上传图片头像到七牛云格式变成text

参考技术A流程:七牛云后台的对象存储功能,nodejs后台生成七牛云的token,前端利用elementUI/ice的upload组件,文件名和token作为参数请求到七牛云后台。配置已经完成,写接口用的是express,koa同理,主要做法是先接收前端的图片... 查看详情

七牛云详细教程(包含与阿里云建立连接)

七牛云详细教程(包含与阿里云建立连接)1、七牛云简介不管是设计师,还是开发者,亦或是个人、公司。我们有时会需要将图片存在网络上,然后用链接来分享给他人。或是,用来给网站做图片外链,通过CDN加速,新浪、QQ、... 查看详情

七牛云的使用(代码片段)

当七牛云存储区域地域简称不对就会抛以下异常ResponseInfo:com.qiniu.http.Response@46238e3f,status:400,reqId:5cYAAAADmTAShB8W,xlog:X-Log,xvia:,adress:up-z1.qiniu.com/222.222.95.22:80,duration:0.000000s,error:incorrectregion, 查看详情

在ipic中添加七牛云

参考技术A七牛云是iPic在内测期间呼声比较高的国内图床,这里介绍下在iPic中添加七牛云的过程。这点比较简单,直接到这里注册即可。七牛的数据处理是以资源为单位的,这里我们可以简单理解为七牛中的文件夹。登录七牛后... 查看详情

上手七牛云存储

早就听说过七牛云存储,终于有时间上手实践。 1、第一步,注册七牛账号,由于是测试,首先申请的是个人账号 2、注册成功之后,默认是体验账号,每月只有1G的空间容量及1G的下载流量      3、... 查看详情