雲存儲之覆蓋上傳——七牛雲

  • 概述: 
    本地文件修改,而後須要覆蓋在七牛存儲空間本來已經存在的文件,那麼這時須要使用七牛提供的覆蓋上傳;html

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

  • 思路: 
    1.七牛提供上傳策略,指定scope爲< bucketName> : < key> 
    便可實現覆蓋上傳,如圖: 
    這裏寫圖片描述 
    七牛提供關於上傳策略的說明文檔連接以下: 
    http://developer.qiniu.com/article/developer/security/put-policy.htmlwindows

    2.遵守七牛的開發規範,獲取Auth——-》獲取token——》執行覆蓋上傳的業務邏輯——》查看結果ide

  • 示例以下:(注:當前使用的是qiniu-Java-sdk-7.2.1.jar)函數

 1 package com.qiniu.kodo;
 2 
 3 import com.qiniu.base.AccountMgr;
 4 import com.qiniu.common.QiniuException;
 5 import com.qiniu.common.Zone;
 6 import com.qiniu.http.Response;
 7 import com.qiniu.storage.Configuration;
 8 import com.qiniu.storage.UploadManager;
 9 import com.qiniu.util.Auth;
10 import com.qiniu.util.StringMap;
11 
12 /**
13  * 七牛:覆蓋上傳
14  * 
15  * @author xuhuanchao
16  *
17  */
18 public class OverrideUpload {
19 
20     //獲取受權對象
21     Auth auth = Auth.create(AccountMgr.ACCESS_KEY, AccountMgr.SECRET_KEY);
22 
23     //第一種方式: 指定具體的要上傳的zone
24     //注:該具體指定的方式和如下自動識別的方式選擇其一便可
25     //要上傳的空間(bucket)的存儲區域爲華東時
26     // Zone z = Zone.zone0();
27     //要上傳的空間(bucket)的存儲區域爲華北時
28     // Zone z = Zone.zone1();
29     //要上傳的空間(bucket)的存儲區域爲華南時
30     // Zone z = Zone.zone2();
31 
32     //第二種方式: 自動識別要上傳的空間(bucket)的存儲區域是華東、華北、華南。
33     Zone zone = Zone.autoZone();
34 
35     Configuration config = new Configuration(zone);
36     UploadManager uploadManager = new UploadManager(config);
37 
38     /**
39      * 獲取憑證
40      * @param bucketName
41      *           空間名稱
42      * @return
43      */
44     public String getUpToken(String bucketName, String key) {
45         //insertOnly 若是但願只能上傳指定key的文件,而且不容許修改,那麼能夠將下面的 insertOnly 屬性值設爲 1
46         return auth.uploadToken(bucketName, key, 3600, new StringMap().put("insertOnly", 0));
47     }
48 
49     /**
50      * 覆蓋上傳
51      * @param path
52      *            上傳文件路徑
53      * @param bucketName
54      *            空間名
55      * @param key
56      *            文件名
57      */
58     public void overrideUpload(String path, String bucketName, String key) {
59         try {
60             String token = getUpToken(bucketName, key);//獲取 token
61             Response response = uploadManager.put(path, key, token);//執行上傳,經過token來識別 該上傳是「覆蓋上傳」
62             System.out.println(response.toString());
63         } catch (QiniuException e) {
64             System.out.println(e.response.statusCode);
65             e.printStackTrace();
66         }
67     }
68 
69     /**
70      * 主函數:測試
71      * 
72      * @param args
73      */
74     public static void main(String[] args) {
75         // 上傳文件的路徑,由於在Mac下,因此路徑和windows下不一樣
76         String filePath = "/Users/xuhuanchao/Documents/admin/mind/imgs/admin_3.jpg";
77         // 要上傳的空間
78         String bucketName = "java-bucket";
79         // 上傳到七牛後保存的文件名
80         String key = "admin_3.jpg";
81 
82         new OverrideUpload().overrideUpload(filePath, bucketName, key);
83     }
84 
85 }
相關文章
相關標籤/搜索