b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Java SDK

电脑杂谈  发布时间:2019-08-11 08:01:37  来源:网络整理

七牛云开发者中心_七牛云存储 看准_七牛云开发者中心

{"key":"qiniu.jpg","hash":"Ftgm-CkWePC9fzMBTRNmPMhGBcSV","bucket":"if-bc","fsize":39335}

里面生成的自定义上传回复的上传凭证适用于上传端(无论是客户端还是服务端)和服务器之间进行直接交互的现象下。在客户端上传的画面之下,有时候客户端需要在文档上传到以后,从业务服务器获取相关的资料,这个时候就要用到的上传回调及相关回调参数的设置。

String accessKey = "access key";
String secretKey = "secret key";
String bucket = "bucket name";
Auth auth = Auth.create(accessKey, secretKey);
StringMap putPolicy = new StringMap();
putPolicy.put("callbackUrl", "http://api.example.com/qiniu/upload/callback");
putPolicy.put("callbackBody", "{\"key\":\"$(key)\",\"hash\":\"$(etag)\",\"bucket\":\"$(bucket)\",\"fsize\":$(fsize)}");
putPolicy.put("callbackBodyType", "application/json");
long expireSeconds = 3600;
String upToken = auth.uploadToken(bucket, null, expireSeconds, putPolicy);
System.out.println(upToken);

在使用了上传回调的现象下,客户端收到的回复就是业务服务器响应的JSON格式内容。

通常状况下,我们建议使用application/json格式来设置callbackBody,维持数据文档的统一性。实际状况下,callbackBody也支持application/x-www-form-urlencoded格式来组织内容,这个主要看业务服务器在接收到callbackBody的内容时怎么解析。例如:

String accessKey = "access key";
String secretKey = "secret key";
String bucket = "bucket name";
Auth auth = Auth.create(accessKey, secretKey);
StringMap putPolicy = new StringMap();
putPolicy.put("callbackUrl", "http://api.example.com/qiniu/upload/callback");
putPolicy.put("callbackBody", "key=$(key)&hash=$(etag)&bucket=$(bucket)&fsize=$(fsize)");
long expireSeconds = 3600;
String upToken = auth.uploadToken(bucket, null, expireSeconds, putPolicy);
System.out.println(upToken);

七牛支持在文档上传到以后,马上对其进行多种指令的数据处理,这个只需要在生成的上传凭证中指定相关的处理参数即可。

String accessKey = "access key";
String secretKey = "secret key";
String bucket = "bucket name";
Auth auth = Auth.create(accessKey, secretKey);
StringMap putPolicy = new StringMap();
//数据处理指令,支持多个指令
String saveMp4Entry = String.format("%s:avthumb_test_target.mp4", bucket);
String saveJpgEntry = String.format("%s:vframe_test_target.jpg", bucket);
String avthumbMp4Fop = String.format("avthumb/mp4|saveas/%s", UrlSafeBase64.encodeToString(saveMp4Entry));
String vframeJpgFop = String.format("vframe/jpg/offset/1|saveas/%s", UrlSafeBase64.encodeToString(saveJpgEntry));
//将多个数据处理指令拼接起来
String persistentOpfs = StringUtils.join(new String[]{
        avthumbMp4Fop, vframeJpgFop
}, ";");
putPolicy.put("persistentOps", persistentOpfs);
//数据处理队列名称,必填
putPolicy.put("persistentPipeline", "mps-pipe1");
//数据处理完成结果通知地址
putPolicy.put("persistentNotifyUrl", "http://api.example.com/qiniu/pfop/notify");
long expireSeconds = 3600;
String upToken = auth.uploadToken(bucket, null, expireSeconds, putPolicy);
System.out.println(upToken);    

队列 pipeline 请参阅创建私有队列;转码操作详细取值请参阅音视频转码;saveas 请参阅处理结果另存。

七牛支持客户端上传文档的时候定义一些自定义参数,这种取值可以在returnBody和callbackBody里面和内置支持的魔力变量(即模块函数)通过相似的方法来引用。这些自定义的取值名称必须以x:结尾。例如客户端上传的时候指定了自定义的取值x:user和x:age分别是String和int类型。那么可以通过上面的方法引用:

putPolicy.put("returnBody", "{\"key\":\"$(key)\",\"hash\":\"$(etag)\",\"bucket\":\"$(bucket)\",\"fsize\":$(fsize),\"user\":\"$(x:user)\",\"age\",$(x:age)}");

如果

putPolicy.put("callbackBody", "{\"key\":\"$(key)\",\"hash\":\"$(etag)\",\"bucket\":\"$(bucket)\",\"fsize\":$(fsize),\"user\":\"$(x:user)\",\"age\",$(x:age)}");

里面的合成上传凭证的方式,都是通过增设上传策略相关的取值来支持的,这种取值可以通过不同的组合形式来满足不同的业务需求,可以灵活地组织你所需要的上传凭证。

默认会放弃不在预定义集中的取值。即:

String upToken = auth.uploadToken(bucket, key, expireSeconds, putPolicy, true);

若允许添加额外参数,可以将参数设置为false。

String upToken = auth.uploadToken(bucket, key, expireSeconds, putPolicy, false);

服务端直传是指顾客借助服务端SDK从服务端直接上传文档到七牛云,交互的双方一般都在机房里面,但是服务端可以自己生成上传凭证,然后借助SDK中的上传逻辑进行上传,最终从获取上传的结果,这个过程中由于双方都是业务服务器七牛云开发者中心,但是很少利用到上传回调的系统,而是直接自定义returnBody来获取自定义的回复内容。

七牛存储支持空间创建在不同的机房,在使用七牛的Java SDK中的UploadManager上传文档之前,必须要建立一个上传用的Configuration对象,在该对象中,可以指定空间对应的Zone以及其它的一些影响上传的取值。

//构造一个带指定Zone对象的配置类
Configuration cfg = new Configuration(Zone.zone0());
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传

七牛云开发者中心_七牛云存储 看准_七牛云开发者中心

其中关于Zone对象和机房的关系如下:

机房Zone对象

华东

Zone.zone0()

华北

Zone.zone1()

华南

Zone.zone2()

北美

Zone.zoneNa0()

Zone.zoneAs0()

最简单的就是上传本地文件,直接指定文档的完整路径即可上传。

//构造一个带指定Zone对象的配置类
Configuration cfg = new Configuration(Zone.zone0());
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String accessKey = "your access key";
String secretKey = "your secret key";
String bucket = "your bucket name";
//如果是Windows情况下,格式是 D:\\qiniu\\test.png
String localFilePath = "/home/qiniu/test.png";
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = null;
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
try {
    Response response = uploadManager.put(localFilePath, key, upToken);
    //解析上传成功的结果
    DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
    System.out.println(putRet.key);
    System.out.println(putRet.hash);
} catch (QiniuException ex) {
    Response r = ex.response;
    System.err.println(r.toString());
    try {
        System.err.println(r.bodyString());
    } catch (QiniuException ex2) {
        //ignore
    }
}

可以支持将硬盘中的字符字段上传到空间中。

//构造一个带指定Zone对象的配置类
Configuration cfg = new Configuration(Zone.zone0());
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String accessKey = "your access key";
String secretKey = "your secret key";
String bucket = "your bucket name";
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = null;
try {
    byte[] uploadBytes = "hello qiniu cloud".getBytes("utf-8");
    Auth auth = Auth.create(accessKey, secretKey);
    String upToken = auth.uploadToken(bucket);
    try {
        Response response = uploadManager.put(uploadBytes, key, upToken);
        //解析上传成功的结果
        DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
        System.out.println(putRet.key);
        System.out.println(putRet.hash);
    } catch (QiniuException ex) {
        Response r = ex.response;
        System.err.println(r.toString());
        try {
            System.err.println(r.bodyString());
        } catch (QiniuException ex2) {
            //ignore
        }
    }
} catch (UnsupportedEncodingException ex) {
    //ignore
}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-118827-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 任立威
      任立威

      #杨洋icon##杨洋2015金投赏#棒

    • 始祖
      始祖

      所以盲目乐观要倒霉

    • 王攀攀
      王攀攀

      但实际利率上浮不再设上限

    热点图片
    拼命载入中...