目的在于解决:企业服务器由于处理图片/文档等工作内容,而降低服务器的工作效率,节约开支,七牛云来存储企业上传的图片或者文档,使企业的Web应用快速响应用户的需求。
例如说,我上传(手动上传或代码上传)一张test.png的图片在七牛空间上
样式1:裁剪正中部分,等比缩小生成200x200缩略图
http://7xr5s7.com1.z0.glb.clouddn.com/test.png?imageView/1/w/200/h/200
样式2:宽度固定为200px,高度等比缩小,生成200x133缩略图:
http://7xr5s7.com1.z0.glb.clouddn.com/test.png?imageView2/2/w/200
样式3:高度固定为200px,宽度等比缩小,生成300x200缩略图:
http://7xr5s7.com1.z0.glb.clouddn.com/test.png?imageView2/2/h/200
1.七牛给我们提供了图片浏览的样式,能符合绝大多数人的需求,那如何把图片上传到七七牛空间,注册,登陆,创建空间,上传即可,下图
访问路径: url/images/test.png?+样式
url:七牛默认给你指定的免费域名,可以绑定自己的二级或三级域名.
例如:img.test.com
点击上传即可手动上传。
下面开始介绍如何实现Java代码上传
maven-pom.xml
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.0.0</version>
</dependency>
2.JavaDemo代码实现上传
package com.bigluobo.service;
/**
* Created by Administrator on 2016/2/23.
*/
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.*;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.*;
public class UploadDemo {
String ACCESS_KEY = "ACCESS_KEY";
String SECRET_KEY = "SECRET_KEY ";
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
UploadManager uploadManager = new UploadManager();
private String calcFileName(){
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmmss");
Date date=new Date();
String filename=sdf.format(date);
return filename;
}
//获得随机值
private final String generateRandomString(int length) {
String allChar = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
StringBuffer sb = new StringBuffer();
Random random = new Random();
for (int i = 0; i < length; i++) {
sb.append(allChar.charAt(random.nextInt(allChar.length())));
}
return sb.toString();
}
// 覆盖上传
/*可以参考七牛的上传策略
http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html
指定上传的目标资源空间(Bucket)和资源键名(Key)。
有两种格式:
● <bucket>,表示允许用户上传文件到指定的 bucket。在这种格式下文件只能“新增”,若已存在同名资源则会失败。
● <bucket>:<key>,表示只允许用户上传指定key的文件。在这种格式下文件默认允许“修改”,已存在同名资源则会被本次覆盖。如果希望只能上传指定key的文件,并且不允许修改,那么可以将下面的 insertOnly 属性值设为 1。*/
private String getUpToken(String filename){
return auth.uploadToken("images", filename, 3600, new StringMap().put("scope", "images")
.put("insertOnly",1)
.put("mimeLimit","image/*"));//限制只能上传图片
}
public void upload() throws QiniuException {
File file=new File("C:\\Users\\Administrator\\Desktop\\2.png");
try {
String token=getUpToken(calcFileName());
Response ress=uploadManager.put(file, calcFileName(), token);
System.out.println(ress.bodyString());
}catch (QiniuException e){
Response r=e.response;
// 请求失败时简单状态信息
System.out.println(r.toString());
try {
// 响应的文本信息
System.out.println(r.bodyString());
// System.out.println(r.);
} catch (QiniuException e1) {
//ignore
}
}
}
public static void main(String args[]) throws QiniuException{
new UploadDemo().upload();
}
}