云存储之覆盖上传——七牛云

  • 概述: 
    本地文件修改,然后需要覆盖在七牛存储空间原本已经存在的文件,那么这时需要使用七牛提供的覆盖上传;

  • 问题: 
    如何实现,以及实现思路?

  • 思路: 
    1.七牛提供上传策略,指定scope为< bucketName> : < key> 
    即可实现覆盖上传,如图: 
    这里写图片描述 
    七牛提供关于上传策略的说明文档链接如下: 
    http://developer.qiniu.com/article/developer/security/put-policy.html

    2.遵照七牛的开发规范,获取Auth——-》获取token——》执行覆盖上传的业务逻辑——》查看结果

  • 示例如下:(注:当前使用的是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 }
原文地址:https://www.cnblogs.com/qiniu/p/6137281.html