您可以将文件从一个存储空间(源存储空间)拷贝到同一地域的另一个存储空间(目标存储空间)中。
以下代码用于拷贝文件。
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 | // 创建copy请求 CopyObjectRequest copyObjectRequest = new CopyObjectRequest( "<srcBucketName>" , "<srcObjectKey>" , "<destBucketName>" , "<destObjectKey>" ); // 可选设置copy文件元信息 // ObjectMetadata objectMetadata = new ObjectMetadata(); // objectMetadata.setContentType("application/octet-stream"); // copyObjectRequest.setNewObjectMetadata(objectMetadata); // 异步copy OSSAsyncTask copyTask = oss.asyncCopyObject(copyObjectRequest, new OSSCompletedCallback<CopyObjectRequest, CopyObjectResult>() { @Override public void onSuccess(CopyObjectRequest request, CopyObjectResult result) { Log.d( "copyObject" , "copy success!" ); } @Override public void onFailure(CopyObjectRequest request, ClientException clientExcepion, ServiceException serviceException) { // 请求异常 if (clientExcepion != null ) { // 本地异常如网络异常等 clientExcepion.printStackTrace(); } if (serviceException != null ) { // 服务异常 Log.e( "ErrorCode" , serviceException.getErrorCode()); Log.e( "RequestId" , serviceException.getRequestId()); Log.e( "HostId" , serviceException.getHostId()); Log.e( "RawMessage" , serviceException.getRawMessage()); } } }); |
说明
- 源Object和目标Object必须属于同一地域。
- 如果拷贝操作的源Object地址和目标Object地址相同,可以修改已有文件元信息。
- 拷贝文件大小不能超过1G,超过1G需使用Multipart Upload等操作。