在 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°ree=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包含%、#、? |
PREVIOUS分片上传
NEXT比较本地文件和远程文件etag