1. 程式人生 > >七牛雲端儲存之覆蓋上傳

七牛雲端儲存之覆蓋上傳

  • 概述:
    本地檔案修改,然後需要覆蓋在七牛儲存空間原本已經存在的檔案,那麼這時需要使用七牛提供的覆蓋上傳;

  • 問題:
    如何實現,以及實現思路?

  • 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