七牛云-上传策略常用示例之数据处理

概述

继上一篇文章 七牛云-上传策略常用示例 介绍了七牛上传策略中的常见的使用场景,本文主要介绍如何使用上传策略实现在文件上传成功后自动调用七牛提供的数据处理接口,进行数据处理操作。

使用示例

视频文字水印示例:
使用上传策略中的persistentOps 指定数据处理的接口和相关的参数,persistentPipeline 指定私有队列 进行数据处理, 避免在公有队列排队等候较长时间,提升效率; 程序如下:

    /**
     * 测试七牛上传后,自动进行数据处理操作,并另存处理后的文件
     * @param bucket 存储空间
     * @param domain 存储空间所对应的域名
     * @param file 上传文件
     */
    public static void testFops(String bucket, String domain, File file) {
        //通过AK,SK创建Auth 对象
        Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
        Configuration cfg = new Configuration(Zone.zone0());
        //上传对象
        UploadManager uploadMgr = new UploadManager(cfg);
        //私有队列
        String pipeline = "av-pipeline";
        //水印文字
        String wmText = UrlSafeBase64.encodeToString("Word For Test");
        //水印文字的颜色
        String wmFontColor = UrlSafeBase64.encodeToString("#FFFF00");
        //设置avthumb 接口
        StringBuffer ops = new StringBuffer("");
        ops.append("avthumb/mp4/wmText/" + wmText +"/wmGravityText/NorthEast/wmFontColor/" + wmFontColor);
        String saveAs = UrlSafeBase64.encodeToString(bucket + ":" + "new_" + file.getName());
        //通过管道符 "|" 拼接 saveas 接口, 保存 数据处理后的视频
        ops.append("|saveas/" + saveAs);
        //saveas 接口 需要签名 sign
        String sign = domain + "/" + file.getName() + "?" + ops.toString();
        String encodeSign = UrlSafeBase64.encodeToString(sign);
        ops.append("/sign/" + encodeSign);
        //指定 数据处理 的 上传策略, 当文件上传成功后,自定执行数据处理操作,即:ops 的接口,图片加水印,另存为 new_file.getName();
        StringMap putPolicy = new StringMap();
        putPolicy.put("persistentOps", ops.toString())      //数据处理接口及参数
                 .put("persistentPipeline", pipeline);      //私有数据处理队列

        //获取上传凭证, 包含上传策略
        String uploadToken = auth.uploadToken(bucket, file.getName(), 3600, putPolicy);

        try {
            //上传
            Response resp = uploadMgr.put(file, file.getName(), uploadToken);
            //查看结果
            System.out.println(resp.statusCode + ":" + resp.bodyString());
        } catch (QiniuException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

关于 程序中 调用的avthumb 接口, 可查看七牛的开发者中心说明文档, 链接:https://developer.qiniu.com/dora/manual/1248/audio-and-video-transcoding-avthumb

结果

执行该方法返回的信息:

200:{"hash":"lkneQF5h-knbumUja8ztwZ_9vtOV","key":"mayun.mp4","persistentId":"z0.5991c5ab45a2650c99ca08b7"}

通过persistentId 可以查看数据处理结果, 地址:

http://api.qiniu.com/status/get/prefop?id=z0.5991c5ab45a2650c99ca08b7

返回结果

{
"code": 0,
"desc": "The fop was completed successfully",
"id": "z0.5991c5ab45a2650c99ca08b7",
"inputBucket": "test-bucket",
"inputKey": "mayun.mp4",
"items": [
{
"cmd": "avthumb/mp4/wmText/V29yZCBGb3IgVGVzdA==/wmGravityText/NorthEast/wmFontColor/I0ZGRkYwMA==/wmFontSize/2|saveas/dGVzdC1idWNrZXQ6bmV3X21heXVuLm1wNA==/sign/dGVzdC56aGFvamlhbmZlbmcuY24vbWF5dW4ubXA0P2F2dGh1bWIvbXA0L3dtVGV4dC9WMjl5WkNCR2IzSWdWR1Z6ZEE9PS93bUdyYXZpdHlUZXh0L05vcnRoRWFzdC93bUZvbnRDb2xvci9JMFpHUmtZd01BPT0vd21Gb250U2l6ZS8yfHNhdmVhcy9kR1Z6ZEMxaWRXTnJaWFE2Ym1WM1gyMWhlWFZ1TG0xd05BPT0=",
"code": 0,
"desc": "The fop was completed successfully",
"hash": "lnpwZdWVdtP40j7aWRD7VcfkUln0",
"key": "new_mayun.mp4",
"returnOld": 0
}
],
"pipeline": "1381151735.av-pipeline",
"reqid": "sQkAAC8PjH_swNoU"
}

空间内容管理查看
七牛云-上传策略常用示例之数据处理_第1张图片

你可能感兴趣的:(Qiniu,java)