Copying Parts
Functions
After creating a multipart upload job, you can specify its upload ID and upload a part to the job in OBS. Alternatively, you can make an API call to add a part (part of an object or the whole object).
You cannot determine whether a request is successful only based on the status_code in the returned HTTP header. If 200 is returned for status_code, the server has received the request and started to process the request. The copy is successful only when the body in the response contains ETag.
Copy the source object and save it as part1. If a part1 already exists before the copying, the original part1 will be overwritten by the newly copied part1. After the copy is successful, only the latest part1 is displayed. The old part1 data will be deleted. Therefore, ensure that the target part does not exist or has no value when using the part copy operation. Otherwise, data may be deleted by mistake. The source object in the copy process does not change.
Request Syntax
PUT /ObjectName?partNumber=partNum&uploadId=UploadID HTTP/1.1 Host: bucketname.obs.region.example.com Date: date x-obs-copy-source: sourceobject x-obs-copy-source-range:bytes=start-end Authorization: authorization Content-Length: length
Request Parameters
To copy a part, you need to specify the part number of the target part and the multipart upload task number. Table 1 describes the parameters.
Request Headers
In addition the common message headers, the request uses two extended headers. Table 3 describes the common message header.
Header |
Description |
Mandatory |
---|---|---|
x-obs-copy-source |
Indicates the source object to be copied. Type: string |
Yes |
x-obs-copy-source-range |
Indicates the range of bytes (start - end) to be copied from the source object. start indicates the start byte of the part to be copied and end indicates the end byte. Type: integer |
No |
x-obs-copy-source-if-match |
Indicates that the source object is copied only if its ETag matches the one specified in this header. Otherwise, a 412 status code (failed precondition) is returned. Type: string Example: x-obs-copy-source-if-match: etag Constraint: This header can be used with x-obs-copy-source-if-unmodified-since but not other conditional copy headers. |
No |
x-obs-copy-source-if-none-match |
Indicates that the source object is copied only if its ETag does not match the one specified in this header. Otherwise, a 412 status code (failed precondition) is returned. Type: string Example: x-obs-copy-source-if-none-match: etag Constraint: This header can be used with x-obs-copy-source-if-modified-since but not other conditional copy headers. |
No |
x-obs-copy-source-if-unmodified-since |
Indicates that the source object is copied only if it has not been modified since the time specified by this header. Otherwise, a 412 status code (failed precondition) is returned. This header can be used with x-obs-copy-source-if-match but not other conditional copy headers. Type: string Format: HTTP time string complying with the format specified at http://www.ietf.org/rfc/rfc2616.txt, which can be any of the following:
Examples:
Constraint: The time specified by this header cannot be later than the current server time (GMT time), or this header does not take effect. |
No |
x-obs-copy-source-if-modified-since |
Indicates that the source object is copied only if it has been modified since the time specified by this header. Otherwise, a 412 status code (failed precondition) is returned. This header can be used with x-obs-copy-source-if-none-match but not other conditional copy headers. Type: string Format: HTTP time string complying with the format specified at http://www.ietf.org/rfc/rfc2616.txt, which can be any of the following:
Examples:
Constraint: The time specified by this header cannot be later than the current server time (GMT time), or this header does not take effect. |
No |
Request Elements
This request involves no elements.
Response Syntax
HTTP/1.1 status_code Date: date <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <CopyPartResult xmlns="http://obs.region.example.com/doc/2015-06-30/"> <LastModified>modifiedDate</LastModified> <ETag>etag</ETag> </CopyPartResult>
Response Headers
The response to the request uses common headers. For details, see Table 1.
Response Elements
This response contains elements of a part copy result. Table 3 describes the elements.
Error Responses
- If the AK or signature is invalid, OBS returns 403 Forbidden and the error code is AccessDenied.
- Check whether the source bucket or destination bucket exists. If the source bucket or destination bucket does not exist, OBS returns 404 Not Found and the error code is NoSuchBucket.
- If the source object does not exist, OBS returns 404 Not Found and the error code is NoSuchKey.
- If the user does not have the read permission for the specified object, OBS returns 403 Forbidden and the error code is AccessDenied.
- If the user does not have the write permission for the destination bucket, OBS returns 403 Forbidden and the error code is AccessDenied.
- If the specified task does not exist, OBS returns 404 Not Found and the error code is NoSuchUpload.
- If the user is not the initiator of the multipart upload task, OBS returns 403 Forbidden and the error code is AccessDenied.
- When the size of a copied part has exceeded 5 GB, OBS returns 400 Bad Request.
- If a part number is not within the range from 1 to 10000, OBS returns error code 400 Bad Request.
Other errors are included in Table 2.
Sample Request
PUT /tobject02?partNumber=2&uploadId=00000163D40171ED8DF4050919BD02B8 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.example.com Accept: */* Date: WED, 01 Jul 2015 05:16:32 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:dSnpnNpawDSsLg/xXxaqFzrAmMw= x-obs-copy-source: /destbucket/object01
Sample Response
1 2 3 4 5 6 7 8 9 10 11 12 13 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 8DF400000163D40ABBD20405D30B0542 x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCTIJpD2efLy5o8sTTComwBb2He0j11Ne Content-Type: application/xml Date: WED, 01 Jul 2015 05:16:32 GMT Transfer-Encoding: chunked <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <CopyPartResult xmlns="http://obs.example.com/doc/2015-06-30/"> <LastModified>2015-07-01T05:16:32.344Z</LastModified> <ETag>"3b46eaf02d3b6b1206078bb86a7b7013"</ETag> </CopyPartResult> |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot