七牛云存储之批量操作文件

  • 概述:
    实际业务中通常都需要多文件批量进行处理,那么七牛的sdk中也有提供这样的实现,BucketManager 对象中有一个静态的内部类Batch,封装了一个 文件管理操作指令的集合ops,建议大家可以看下七牛提供的源码;github地址:https://github.com/qiniu/java-sdk/tree/v7.2.1

  • 说明:
    虽然使用的是七牛封装的api,但其实实现都是基于http协议来完成的;比如下面程序中会演示的copy 方法,查看源码我们可以看到其实是通过http协议发送请求,调用了copy 这样一个接口,请求七牛的云服务器完成这一个操作;如图:
    七牛云存储之批量操作文件_第1张图片

  • 实现目标:
    将多个文件复制到另外一个空间

  • 思路:

    1. 指定复制后存储文件的空间和文件被复制的空间
    2. 指定被复制的文件,以及复制后存储到新空间文件的名称
    3. 七牛的操作都是需要Auth对象进行授权的,而该授权需要个人账号的AccessKey、SecretKey
    4. 通过BucketManager.Batch对象进行批处理操作
  • 代码示例:

package com.qiniu.kodo.manager;

import com.qiniu.base.AccountMgr;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.util.Auth;


/**
 * 批量操作文件
 * @author xuhuanchao
 *
 */
public class BatchCopyFile {

    /**
     * Main Method
     * @param args
     */
    public static void main(String[] args) {

        Auth auth = Auth.create(AccountMgr.ACCESS_KEY, AccountMgr.SECRET_KEY);

        Configuration config = new Configuration(Zone.autoZone());

        BucketManager bucketMgr = new BucketManager(auth, config);

        BucketManager.Batch batch = new BucketManager.Batch();

        String fromBucket = "testspace";
        String toBucket = "java-bucket";

        String fromKey_1 = "1469612335_admin_1.png";
        String toKey_1 = "admin_1.png";

        String fromKey_2 = "1469613472_admin_3.jpg";
        String toKey_2 = "admin_3.jpg";

        try {
            //批量复制文件
            Response resp = bucketMgr.batch(batch.copy(fromBucket, fromKey_1, toBucket, toKey_1)
                                                 .copy(fromBucket, fromKey_2, toBucket, toKey_2));
            System.out.println("状态code: " + resp.statusCode);
        } catch (QiniuException e) {
            e.printStackTrace();
        }
    }
}

注:当前使用的是qiniu-java-sdk-7.2.1.jar

  • 检查结果:
    如图所示:
    七牛云存储之批量操作文件_第2张图片

你可能感兴趣的:(Qiniu)