public class Upload {
public final static Upload me = new Upload();
//设置好账号的ACCESS_KEY和SECRET_KEY
public static final String ACCESS_KEY = “xxxxxxxxxxx”;
public static final String SECRET_KEY = “xxxxxx”;
//要上传的空间
public static final String PICTURE_BUCKET = “xxx”;
//bind domain
public static final String DOMAIN = “xxxxx”;
private Auth auth;
private UploadManager uploadManager;
private void configUploadManager() {
//密钥配置
auth = Auth.create(ACCESS_KEY, SECRET_KEY);
///指定上传的Zone的信息//
//第一种方式: 指定具体的要上传的zone
//注:该具体指定的方式和以下自动识别的方式选择其一即可
//要上传的空间(bucket)的存储区域为华东时
// Zone z = Zone.zone0();
//要上传的空间(bucket)的存储区域为华北时
// Zone z = Zone.zone1();
//要上传的空间(bucket)的存储区域为华南时
// Zone z = Zone.zone2();
//第二种方式: 自动识别要上传的空间(bucket)的存储区域是华东、华北、华南。
Zone z = Zone.autoZone();
Configuration c = new Configuration(z);
//创建上传对象
uploadManager = new UploadManager(c);
}
public Upload() {
configUploadManager();
}
//简单上传,使用默认策略,只需要设置上传的空间名就可以了
public String getUpToken(){
return auth.uploadToken(PICTURE_BUCKET);
}
public HashMap<String,Object> getUploadInfo(){
HashMap<String,Object> upload_info = new HashMap<String, Object>();
upload_info.put("bucket",PICTURE_BUCKET);
upload_info.put("token",getUpToken());
upload_info.put("domain",DOMAIN);
return upload_info;
}
/**
* 上传图片
* @param filePath 图片所在路径
* @param key 图片key
* @return filename 图片在七牛云上的文件名
* @throws IOException
*/
public String upload(String filePath, String key) throws IOException {
try {
//调用put方法上传
Response res = uploadManager.put(filePath, key, getUpToken());
//打印返回的信息
System.out.println(res.bodyString());
return (String) res.jsonToMap().get("key");
} catch (QiniuException e) {
Response r = e.response;
// 请求失败时打印的异常的信息
System.out.println(r.toString());
try {
//响应的文本信息
System.out.println(r.bodyString());
} catch (QiniuException e1) {
//ignore
}
return null;
}
}
//公开空间
public String getDownloadPublicFileUrl(String fileName){
// String fileName = “xxxx.pdf”;
String domainOfBucket = “xxxx”;
String encodedFileName = fileName;
// try {
// encodedFileName = URLEncoder.encode(fileName, “utf-8”);
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
String finalUrl = String.format(“%s/%s”, domainOfBucket, encodedFileName);
System.out.println(finalUrl);
return finalUrl;
}
//私有空间
public String getDownloadPrivateFileUrl(String fileName){
String domainOfBucket = "http://xxxxx";
String encodedFileName = fileName;
// try {
// encodedFileName = URLEncoder.encode(fileName, “utf-8”);
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
String publicUrl = String.format(“%s/%s”, domainOfBucket, encodedFileName);
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
long expireInSeconds = 3600;//1小时,可以自定义链接过期时间
String finalUrl = auth.privateDownloadUrl(publicUrl, expireInSeconds);
System.out.println(finalUrl);
return finalUrl;
}
/**
* 获取七牛上传信息
* GET
* /uploadInfo
* return
*/
@ActionKey("/uploadInfo")
@Before({GetInterceptor.class})
public void uploadInfo(){
respondSuccess(Upload.me.getUploadInfo());
}
}