指定存储类型上传

在 US3 中,一个存储空间(Bucket)可以存储不同存储类型的对象,存储类型的详细介绍参见存储类型

本 SDK 提供了指定存储类型上传文件的功能,可通过在HTTP Header中添加 X-Ufile-Storage-Class 字段指定存储类型即可

说明

  • X-Ufile-Storage-Class 可指定值为ARCHIVE、IA或STANDARD
  • 目前 PutFile、PostFile 和分片上传均支持指定存储类型上传文件

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public static void putFile(File file, String mimeType, String nameAs, String toBucket) {
        try {
            /**
             * 上传回调策略
             * 必须填写回调接口url(目前仅支持http,不支持https),可选填回调参数,回调参数请自行决定是否需要urlencode
             * 若配置上传回调,则上传接口的回调将会透传回调接口的response,包括httpCode
             */
            PutPolicy putPolicy = new PutPolicyForCallback.Builder("http://xxx.xxx.xxx.xxx[:port][/path]")
                    .addCallbackBody(new PolicyParam("key", "value"))
                    .build();
            PutObjectResultBean response = UfileClient.object(Constants.OBJECT_AUTHORIZER, config)
                    .putObject(file, mimeType)
                    .nameAs(nameAs)
                    .toBucket(toBucket)
                    /**
                     * 配置文件存储类型,分别是标准、低频、冷存,对应有效值:STANDARD | IA | ARCHIVE
                     */
                    .withStorageType(StorageType.STANDARD)
                    /**
                     * 图片处理服务
                     * https://docs.ucloud.cn/ufile/service/pic
                     */
//                    .withIopCmd("iopcmd=rotate&degree=90")
                    /**
                     * 为云端对象配置自定义数据,每次调用将会替换之前数据。
                     * 所有的自定义数据总大小不能超过 8KB。
                     */
//                    .withMetaDatas()
                    /**
                     * 为云端对象添加自定义数据,可直接调用,无须先调用withMetaDatas
                     * key不能为空或者""
                     *
                     */
//                    .addMetaData(new Parameter<>("key","value"))
                    /**
                     * 配置上传回调策略
                     */
//                .withPutPolicy(putPolicy)
                    /**
                     * 是否上传校验MD5
                     */
//                .withVerifyMd5(false)
                    /**
                     * 指定progress callback的间隔
                     */
//                .withProgressConfig(ProgressConfig.callbackWithPercent(10))
                    /**
                     * 配置读写流Buffer的大小, Default = 256 KB, MIN = 4 KB, MAX = 4 MB
                     */
//                    .setBufferSize(4 << 20)
                    /**
                     * 配置进度监听
                     */
                    .setOnProgressListener(new OnProgressListener() {
                        @Override
                        public void onProgress(long bytesWritten, long contentLength) {
                            JLog.D(TAG, String.format("[progress] = %d%% - [%d/%d]", (int) (bytesWritten * 1.f / contentLength * 100), bytesWritten, contentLength));
                        }
                    })
                    .execute();
            JLog.D(TAG, String.format("[res] = %s", (response == null ? "null" : response.toString())));
        } catch (UfileClientException e) {
            e.printStackTrace();
        } catch (UfileServerException e) {
            e.printStackTrace();
        }

错误码

HTTP 状态码 RetCode ErrMsg 描述
400 -148653 bucket not exists 存储空间不存在
400 -15036 check md5 failed MD5校验失败
401 -148643 no authorization found 上传凭证错误
403 -148643 invalid signature API公私钥错误KeyName包含%、#、?