使用七牛云存储图片案例

使用七牛云存储图片案例

现在很多的网站都会用到大量的图片,而图片是网页传输中占主要的数据量,也是影响网站性能的因素之一。因此很多网站都会将图片存储从网站中分离出来,另外搭建一个或多个服务器来存储图片,而网页上的图片都用一个URL地址来指向这些服务器上的图片的地址,这样的话网站的性能就明显提高了。图片服务器可以自己搭建,或者使用网上的云服务器,比如阿里也有,本文选用的是七牛云的对象存储来实现。在七牛云上个人注册并且实名认证成功后可免费使用储存空间10GB,用于测试是完全足够了。

使用七牛云存储图片案例

使用步骤:

1. 准备工作

注册后进行实名认证,通过后可以获得AccessKey以及SecretKey,主要是后面调用接口的时候需要使用。

2.创建存储空间

点击”管理控制台”——> “对象存储”——>”新建存储空间”,并且填入对应的信息。

使用七牛云存储图片案例

如果你希望用户在任何情况下都可以直接访问资源,可以直接将空间设为公开。

3.在项目中引入七牛云提供的JAVA-SDK

注意:此 SDK 适用于 Java 7 及以上版本

使用maven的方式引入:

<dependency>
<groupid>com.qiniu/<groupid>
<artifactid>qiniu-java-sdk/<artifactid>
<version>[7.2.0, 7.2.99]/<version>
/<dependency>

这里的version指定了一个版本范围,每次更新pom.xml的时候会尝试去下载7.2.x版本中的最新版本,不过你也可以手动指定一个固定的版本。

4.使用SDK提供的图片上传工具

七牛文件上传分为客户端上传(主要是指网页端和移动端等面向终端用户的场景)和服务端上传两种场景,具体可以参考官方文档 ,文中使用的是服务端上传的方式。

结合SpringMVC来上传图片到七牛云:

/**
* 文件上传工具
*/
public class UploadUtil {
/**
* 上传到七牛云
* @param file 上传的图片
* @return 七牛云中图片的名字
*/
public static String uploadQiniu(MultipartFile file) {
//构造一个带指定Zone对象的配置类
Configuration cfg = new Configuration(Zone.zone2());
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String accessKey = "你的accessKey";
String secretKey = "你的secretKey";
//存储空间的名字
String bucket = "wolfcode";
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = null;
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
try {
Response response = uploadManager.put(file.getBytes(), key, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
return putRet.key;
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
} catch (Exception ex) {
ex.printStackTrace();

}
return null;
}
}

备注:

1 七牛存储支持空间创建在不同的机房,Zone对象是指定具体哪个机房

使用七牛云存储图片案例

2 默认不指定key的情况下,以文件内容的hash值作为文件名,使用hash的好处还可以去除重复图片,重复上传同一张图片,在七牛云中只会占用一个图片的空间。

3 上传成功后的返回的DefaultPutRet对象,里面包含图片的hash值,和图片的key值其实就是文件名。

最后一步,就是访问图片了,打开对象存储空间,可以看到七牛云分配的外链域名,以及上传过的图片,把域名和图片的key值拼接在一起,就是图片的URL了,如:http://pgd3zoxnk.bkt.clouddn.com/FgaeuBs1QwDZUd9UO4betMtgZOMs

使用七牛云存储图片案例


分享到:


相關文章: