七牛雲端儲存之覆蓋上傳
阿新 • • 發佈:2019-02-18
概述:
本地檔案修改,然後需要覆蓋在七牛儲存空間原本已經存在的檔案,那麼這時需要使用七牛提供的覆蓋上傳;問題:
如何實現,以及實現思路?-
2.遵照七牛的開發規範,獲取Auth——-》獲取token——》執行覆蓋上傳的業務邏輯——》檢視結果
示例如下:
package com.qiniu.kodo;
import com.qiniu.base.AccountMgr;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;
/**
* 七牛:覆蓋上傳
*
* @author xuhuanchao
*
*/
public class OverrideUpload {
//獲取授權物件
Auth auth = Auth.create(AccountMgr.ACCESS_KEY, AccountMgr.SECRET_KEY);
//第一種方式: 指定具體的要上傳的zone
//注:該具體指定的方式和以下自動識別的方式選擇其一即可
//要上傳的空間(bucket)的儲存區域為華東時
// Zone z = Zone.zone0();
//要上傳的空間(bucket)的儲存區域為華北時
// Zone z = Zone.zone1();
//要上傳的空間(bucket)的儲存區域為華南時
// Zone z = Zone.zone2();
//第二種方式: 自動識別要上傳的空間(bucket)的儲存區域是華東、華北、華南。
Zone zone = Zone.autoZone();
Configuration config = new Configuration(zone);
UploadManager uploadManager = new UploadManager(config);
/**
* 獲取憑證
* @param bucketName
* 空間名稱
* @return
*/
public String getUpToken(String bucketName, String key) {
//insertOnly 如果希望只能上傳指定key的檔案,並且不允許修改,那麼可以將下面的 insertOnly 屬性值設為 1
return auth.uploadToken(bucketName, key, 3600, new StringMap().put("insertOnly", 0));
}
/**
* 覆蓋上傳
* @param path
* 上傳檔案路徑
* @param bucketName
* 空間名
* @param key
* 檔名
*/
public void overrideUpload(String path, String bucketName, String key) {
try {
String token = getUpToken(bucketName, key);//獲取 token
Response response = uploadManager.put(path, key, token);//執行上傳,通過token來識別 該上傳是“覆蓋上傳”
System.out.println(response.toString());
} catch (QiniuException e) {
System.out.println(e.response.statusCode);
e.printStackTrace();
}
}
/**
* 主函式:測試
*
* @param args
*/
public static void main(String[] args) {
// 上傳檔案的路徑,因為在Mac下,所以路徑和windows下不同
String filePath = "/Users/xuhuanchao/Documents/admin/mind/imgs/admin_3.jpg";
// 要上傳的空間
String bucketName = "java-bucket";
// 上傳到七牛後儲存的檔名
String key = "admin_3.jpg";
new OverrideUpload().overrideUpload(filePath, bucketName, key);
}
}
注:當前使用的是qiniu-java-sdk-7.2.1.jar