一、七牛云的对象存储的介绍
七牛云对象存储 Kodo 是七牛云提供的高可靠、强安全、低成本、可扩展的存储服务。您可通过控制台、API、SDK 等方式简单快速地接入七牛存储服务,实现海量数据的存储和管理。通过 Kodo 可以进行文件的上传、下载和管理。
此外,Kodo 的姊妹产品融合 CDN可以对文件下载进行加速,智能多媒体 API更是提供了丰富的基于海量数据深度学习算法的计算机视觉服务,如人脸技术、场景物体识别、OCR 文字识别和内容审核等。
二、七牛云对象存储(Kodo)主要应用场景
- 在线存储和分发
七牛云对象存储提供高可用和高可靠的对象存储服务,您可以放心的将各种内容存储在云端。利用七牛云对象存储的扩展性和按需付费的优势,可以满足您持续快速增长的存储需求。您也可以搭配使用七牛云的对象存储和融合 CDN服务,实现全球覆盖、快速高效的内容分发。
- 镜像存储
七牛云对象存储支持镜像存储,这是一种快速的数据迁移和加速服务。可以帮助您实现无缝数据迁移,迁移过程中并不影响原有业务系统的访问。镜像存储适用于迁移原有业务系统的已有数据。
- 备份和归档
七牛云对象存储提供高可用和高可靠的存储解决方案来备份和归档您的关键数据。通过七牛云的身份验证机制可以设置不同的访问权限和级别,保障您数据的访问安全。相比传统自建的备份和归档存储系统,您无需在业务初期采购高昂硬件,无需担心数据增长带来的扩容问题,从而节省更多的存储成本、维护成本和人力资源成本。
- 富媒体数据处理
针对海量的用户生成内容,七牛云对象存储能够提供跨地域、高并发的内容上传和访问服务。同时结合七牛云提供的数据处理服务,可以在云端实现图片裁剪、格式转化和水印,以及视频转码、切片和拼接等富媒体处理功能,满足移动网络场景下多终端设备的访问需求。
- 静态资源托管
七牛云对象存储无缝集合各类第三方扩展插件,如 WordPress、Discuz、Emlog 等,并支持一键将各类插件里的静态资源托管到七牛云对象存储。
三、使用Java进行开发
-
整合七牛云SDK
在Maven中添加七牛云SDK依赖包:<dependencies> <dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>7.2.11</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.3.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.6.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.qiniu</groupId> <artifactId>happy-dns-java</artifactId> <version>0.1.4</version> <scope>compile</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies>
最新官方SDK开发文档地址:https://developer.qiniu.com/kodo/sdk/1239/java#3
-
上传文件原理
根据官方的开发手册可以知道,七牛云服务器接受从客户端直接上传文件,之后再通过回调地址发送回调,对于返回的数据也给了我们很大的自由,我们完全可以自定义需要返回的数据。也可以从本地直接上传文件,原理与从客户端上传相似,这里不再赘述。
七牛云上传文件开发手册链接:https://developer.qiniu.com/kodo/manual/1272/form-upload
七牛云的仓库有两种,公开仓库和私有仓库,这两种仓库上传的原理相似。七牛云的对象存储类似于java中的Map,使用的是键-值的存储方式,键是唯一的,我们可以通过键来改变它所对应的值,所以我们在上传的时候一定要注意保证键的唯一。
那么七牛云是怎么知道是谁在上传,他应该把上传的文件放在哪里呢?很简单,通过密钥
我们需要先设置七牛云的密钥,在使用的时候通过密钥生成一个通行证,也就是七牛云的上传凭证,这个上传凭证中包含了你上传文件所需要的所有信息,七牛云可以通过这个通行证得到他所需要的信息。
首先,我们来设置密钥:
- 打开七牛云
- 登录七牛云账号,进入个人中心
- 直接生成密钥就可以了
有了密钥以后,我们就可以通过密钥来生成上传凭证了。这里我封装了七牛云上传工具类,直接看工具类吧
package com.kude.controller; import com.qiniu.util.Auth; import com.qiniu.util.StringMap; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Properties; public class Qiniu { // accessKey private static String accessKey = "access key"; // secretKey private static String secretKey = "secret