SDK 提供Copy
方法实现文件拷贝到当前Bucket的功能。
参数说明
参数名 | 类型 | 说明 |
---|---|---|
dstKeyName | string | 拷贝到当前Bucket(即配置文件所配置bucket_name)后文件的KeyName |
srcBucketName | string | 被拷贝文件所在的存储空间 |
srcKeyName | string | 被拷贝文件的KeyName |
说明
- 若当前Bucket已有key为dstKeyName的文件,则该操作会默认覆盖该文件,请谨慎操作。可先通过HeadFile进行判断。
- 目前文件拷贝的srcBucketName可以是同一账号相同地域下不同子账号的任意Bucket
代码示例
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
67
68
69
70
71
72
73
74
75
76
77
78
79
public class CopyObjectSample {
private static final String TAG = "CopyObjectSample";
private static ObjectConfig config = new ObjectConfig("cn-sh2", "ufileos.com");
public static void main(String[] args) {
String srcBucket = "";
String srcKeyName = "";
String dstBucket = "";
String dstKeyName = "";
copyObjectAsync(srcBucket, srcKeyName, dstBucket, dstKeyName);
}
public static void copyObject(String srcBucket, String srcKeyName, String dstBucket, String dstKeyName) {
try {
CopyObjectResultBean response = UfileClient.object(Constants.OBJECT_AUTHORIZER, config)
.copyObject(srcBucket, srcKeyName)
.copyTo(dstBucket, dstKeyName)
/**
* 为云端对象配置自定义数据,每次调用将会替换之前数据。
* 所有的自定义数据总大小不能超过 8KB。
*/
// .withMetaDatas()
/**
* 为云端对象添加自定义数据,可直接调用,无须先调用withMetaDatas
* key不能为空或者""
*
*/
// .addMetaData(new Parameter<>("key","value"))
/**
* 配置用户自定义元数据设置方式
* 具体参数配置可见 {@link MetadataDirective}
*/
// .withMetadataDirective(MetadataDirective.COPY)
.execute();
JLog.D(TAG, String.format("[res] = %s", (response == null ? "null" : response.toString())));
} catch (UfileClientException e) {
e.printStackTrace();
} catch (UfileServerException e) {
e.printStackTrace();
}
}
public static void copyObjectAsync(String srcBucket, String srcKeyName, String dstBucket, String dstKeyName) {
UfileClient.object(Constants.OBJECT_AUTHORIZER, config)
.copyObject(srcBucket, srcKeyName)
.copyTo(dstBucket, dstKeyName)
/**
* 为云端对象配置自定义数据,每次调用将会替换之前数据。
* 所有的自定义数据总大小不能超过 8KB。
*/
// .withMetaDatas()
/**
* 为云端对象添加自定义数据,可直接调用,无须先调用withMetaDatas
* key不能为空或者""
*
*/
// .addMetaData(new Parameter<>("key","value"))
/**
* 配置用户自定义元数据设置方式
* 具体参数配置可见 {@link MetadataDirective}
*/
// .withMetadataDirective(MetadataDirective.COPY)
.executeAsync(new UfileCallback<CopyObjectResultBean>() {
@Override
public void onResponse(CopyObjectResultBean response) {
JLog.D(TAG, String.format("[res] = %s", (response == null ? "null" : response.toString())));
}
@Override
public void onError(Request request, ApiError error, UfileErrorBean response) {
JLog.D(TAG, String.format("[error] = %s\n[info] = %s",
(error == null ? "null" : error.toString()),
(response == null ? "null" : response.toString())));
}
});
}
}
错误码
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包含%、#、? |
404 | -148654 | file not exist | 源文件不存在 |