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


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

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

    • 思路: 
      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 }
  • 相关阅读:
    日志工具——slf4j
    统一建模语言——UML
    Java基础——网络编程
    Java基础——语法基础
    Java基础——NIO(二)非阻塞式网络通信与NIO2新增类库
    Java基础——NIO(一)通道与缓冲区
    动态加载script文件的两种方法
    asp.net 通用的连接数据库实例代码
    Nginx用户认证配置方法详解(域名/目录)
    js冒泡法和数组转换成字符串示例代码
  • 原文地址:https://www.cnblogs.com/qiniu/p/6137281.html
Copyright © 2020-2023  润新知