Uploading an Object - POST
Functions
This API allows you to upload an object to a bucket. This requires the write permission for the bucket.
The name of each object in a bucket must be unique.
If a bucket has versioning disabled, and you upload an object that has the same name as an existing object, the new object overwrites the existing one. You can also use Content-MD5 in the form to verify in-transit integrity. OBS calculates an MD5 after the object is uploaded and checks if this MD5 matches the MD5 carried in the form. If they do not match, an error is reported. You can also use x-obs-acl to control access to objects.
You can also upload an object using the POST method.
A single upload allows at most 5 GB of objects. To upload more than 5 GB of objects, see Operations on Multipart Upload.
This API supports server-side encryption.
Differences Between PUT and POST Methods
PUT requests include parameters in the header, while POST requests include them in the form.
In the URL, PUT requests require object names be specified; POST requests only require bucket domain names. Request lines of PUT and POST are as follows:
PUT /ObjectName HTTP/1.1
POST / HTTP/1.1
For details about PUT upload, see Uploading an Object - PUT.
Versioning
If versioning is enabled for a bucket, each object uploaded has a unique version ID. If versioning is suspended, the version ID is null. Version IDs are returned in the x-obs-version-id header of the response. For details about versioning, see Configuring Versioning for a Bucket.
WORM
If a bucket has WORM enabled, you can configure WORM for its objects. To do so, use x-obs-object-lock-mode and x-obs-object-lock-retain-until-date in the request when uploading an object. If these two elements are not specified, objects uploaded use the default bucket WORM policy (if any). You can also configure or update WORM after an object was uploaded.
If WORM is enabled, versioning is automatically enabled. WORM is based on the object version. Versions of an object not protected by WORM can be deleted. For example, assume version test.txt 001 of an object is protected by WORM. You upload a new version test.txt 002 for the same object with no WORM configured. In such case, test.txt 002 is not protected and can be deleted. If you download an object without specifying a version ID, the latest version — test.txt 002 — is downloaded.
Request Syntax
POST / HTTP/1.1Host: bucketname.obs.region.example.comUser-Agent: browser_dataAccept: file_typesAccept-Language: RegionsAccept-Encoding: encodingAccept-Charset: character_setKeep-Alive: 300Connection: keep-aliveContent-Type: multipart/form-data; boundary=9431149156168Content-Length: length--9431149156168Content-Disposition: form-data; name="key"acl--9431149156168Content-Disposition: form-data; name="success_action_redirect"success_redirect--9431149156168Content-Disposition: form-data; name="content-Type"content_type--9431149156168Content-Disposition: form-data; name="x-obs-meta-uuid"uuid--9431149156168Content-Disposition: form-data; name="x-obs-meta-tag"metadata--9431149156168Content-Disposition: form-data; name="AccessKeyId"access-key-id--9431149156168Content-Disposition: form-data; name="policy"encoded_policy--9431149156168Content-Disposition: form-data; name="signature"signature=--9431149156168Content-Disposition: form-data; name="file"; filename="MyFilename"Content-Type: image/jpegfile_content--9431149156168Content-Disposition: form-data; name="submit"Upload to OBS--9431149156168--
Request Parameters
This request contains no parameters.
Request Headers
This request uses common headers. For details, see Table 3.
If you want to get CORS settings, use the headers in Table 1.
Header | Type | Mandatory (Yes/No) | Description |
---|---|---|---|
Origin | String | Yes | Explanation: Where a cross-domain request is from (usually a domain name), specified in a preflight request Restrictions: None Value range: An HTTP-compliant header value Default value: None |
Access-Control-Request-Headers | String | No | Explanation: HTTP headers in a request. Multiple headers can be included. Restrictions: None Value range: An HTTP-compliant header value Default value: None |
Request Elements
This request uses form elements. Table 2 describes the form elements.
Element | Type | Mandatory (Yes/No) | Description |
---|---|---|---|
file | Binary or text | Yes | Explanation: Object content to upload. Both the file name and path are ignored and will not be used as the object name. The object name is the value of parameter key. Restrictions:
Value range: None Default value: None |
key | String | Yes | Explanation: Name of the object to be created. An object is uniquely identified by an object name in a bucket. An object name is a complete path that does not contain the bucket name. Restrictions: None Value range: 1 to 1,024 characters Default value: None |
AccessKeyId | String | Yes when the restrictions are met | Explanation: Access key ID (AK) of the requester. Restrictions: This parameter is mandatory if there is security policy parameter policy or signature in the request. Value range: AK of a user. Default value: None |
policy | String | Yes when the restrictions are met | Explanation: A security policy Restrictions: This parameter is mandatory if AccessKeyId or signature is provided in the form. Value range: For the policy format, see Authentication of Signature Carried in the Table Uploaded Through a Browser. Default value: None |
signature | String | Yes when the restrictions are met | Explanation: A signature string calculated based on StringToSign. Restrictions: This parameter is mandatory if AccessKeyId or policy is provided in the form. Value range: None Default value: None |
token | String | No | Explanation: Specifies the access key, signature, and security policy of the requester all together. Restrictions: The priority of a token is higher than that of a separately specified AK, signature, or security policy. Example: In HTML: <input type= "text" name="token" value="ak:signature:policy" /> Value range: The value must be in the ak:signature:policy format. Default value: None |
x-obs-acl | String | No | Explanation: Used to set a pre-defined ACL when creating an object Examples: In POLICY: {"acl": "public-read" } In HTML: <input type="text" name="acl" value="public-read" /> Restrictions: None Value range:
Default value: private |
x-obs-grant-read | String | No | Explanation: Used to — when creating an object — grant all users in a domain the permissions to read the object and obtain the object metadata Examples: In POLICY: {'grant-read': 'id=domainId1' }, In HTML: <input type="text" name="grant-read" value="id=domainId1" /> Restrictions: Use commas (,) to separate multiple domains. Value range: The value of domainId must be valid. For details about how to obtain the ID, see Obtaining a Domain ID and a User ID. Default value: None |
x-obs-grant-read-acp | String | No | Explanation: Used to — when creating an object — grant all users in a domain the permission to obtain the object ACL. Examples: In POLICY: {"grant-read-acp": "id=domainId1" }, In HTML: <input type="text" name="grant-read-acp" value="id=domainId1" /> Restrictions: None Value range: The value of domainId must be valid. For details about how to obtain the ID, see Obtaining a Domain ID and a User ID. Default value: None |
x-obs-grant-write-acp | String | No | Explanation: Used to — when creating an object — grant all users in a domain the permission to write the object ACL. Examples: In POLICY: {"grant-write-acp": "id=domainId1" }, In HTML: <input type="text" name="grant-write-acp" value="id=domainId1" /> Restrictions: None Value range: The value of domainId must be valid. For details about how to obtain the ID, see Obtaining a Domain ID and a User ID. Default value: None |
x-obs-grant-full-control | String | No | Explanation: When creating an object, you can use this header to grant all users in an account the permissions to read the object, obtain the object metadata and ACL, and write the object ACL. Examples: In POLICY: {"grant-full-control": "id=domainId1" }, In HTML: <input type="text" name="grant-full-control" value="id=domainId1" /> Restrictions: None Value range: The value of domainId must be valid. For details about how to obtain the ID, see Obtaining a Domain ID and a User ID. Default value: None |
x-obs-storage-class | String | No | Explanation: Used to — when creating an object — specify its storage class. Examples: In POLICY: {"storage-class": "STANDARD" }, In HTML: <input type="text" name="x-obs-storage-class" value="STANDARD" /> Restrictions: The value is case-sensitive. Value range:
Default value: If you do not use this header, the object storage class is the default storage class of the bucket. |
Cache-Control | String | No | Explanation: Standard HTTP header, returned in the response if a user downloads the object or makes a Head Object request. Restrictions: None Value range: See the HTTP requirements for the Cache-Control header. Default value: None |
Content-Type | String | No | Explanation: Standard HTTP header, returned in the response if a user downloads the object or makes a Head Object request. Example: In POLICY: ["starts-with", "$Content-Type", "text/"], In HTML: <input type="text" name="content-type" value="text/plain" /> Restrictions: None Value range: See the HTTP requirements for the Content-Type header. Default value: None |
Content-Disposition | String | No | Explanation: Standard HTTP header, returned in the response if a user downloads the object or makes a Head Object request. Restrictions: None Value range: See the HTTP requirements for the Content-Disposition header. Default value: None |
Content-Encoding | String | No | Explanation: Standard HTTP header, returned in the response if a user downloads the object or makes a Head Object request. Restrictions: None Value range: See the HTTP requirements for the Content-Encoding header. Default value: None |
Expires | String | No | Explanation: Standard HTTP header, returned in the response if a user downloads the object or makes a Head Object request. Restrictions: None Value range: See the HTTP requirements for the Expires header. Default value: None |
success_action_redirect | String | No | Explanation: Where a successful request is redirected
Examples: In POLICY: {"success_action_redirect": "http://123458.com"}, In HTML: <input type="text" name="success_action_redirect" value="http://123458.com" /> Restrictions: The value must start with http or https. Value range: URL Default value: None |
x-obs-meta-* | String | No | Explanation: Used when creating an object to define metadata. The defined metadata is returned in the response when you obtain the object or query its metadata. Examples: In POLICY: {" x-obs-meta-test ": " test metadata " }, In HTML: <input type="text" name=" x-obs-meta-test " value=" test metadata " /> Restrictions: None Value range: For details, see the "Object Metadata" section in the Object Storage Service User Guide. Default value: None |
success_action_status | String | No | Explanation: The status code returned for a successful request. Examples: In POLICY: ["starts-with", "$success_action_status", ""], In HTML: <input type="text" name="success_action_status" value="200" /> Restrictions:
Value range:
Default value: None |
x-obs-website-redirect-location | String | No | Explanation: If a bucket is configured with static website hosting, requests for one object in this bucket can be redirected to another object in the same bucket or to an external URL. OBS stores the value of this header in the object metadata. Restrictions: The value must start with a slash (/), http://, or https:// and cannot exceed 2K. Value range: None Default value: None |
x-obs-server-side-encryption | String | No. This header is required when SSE-KMS is used. | Explanation: Indicates that SSE-KMS is used for server-side encryption. Example: x-obs-server-side-encryption:kms Restrictions: None Value range:
Default value: None |
x-obs-server-side-encryption-kms-key-id | String | No | Explanation: ID of a specified key used for SSE-KMS encryption. Restrictions: This header can only be used when you specify kms for the x-obs-server-side-encryption header. Default value: If you specify kms for encryption but do not specify a key ID, the default master key will be used. If there is not a default master key, OBS will create one and use it. |
x-obs-server-side-encryption-customer-algorithm | String | No. This header is required when SSE-C is used. | Explanation: The algorithm used for encryption. Example: x-obs-server-side-encryption-customer-algorithm:AES256 Restrictions:
Value range: AES256 Default value: None |
x-obs-server-side-encryption-customer-key | String | No. This header is required when SSE-C is used. | Explanation: The key used for encrypting an object. Example: x-obs-server-side-encryption-customer-key:K7QkYpBkM5+hca27fsNkUnNVaobncnLht/rCB2o/9Cw= Restrictions:
Value range: None Default value: None |
x-obs-server-side-encryption-customer-key-MD5 | String | No. This header is required when SSE-C is used. | Explanation: The MD5 value of the key used for encryption. Used to check whether any error occurs during the key transmission. Example: x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== Restrictions:
Value range: MD5 value of the key. Default value: None |
x-obs-expires | Integer | No | Explanation: When an object expires and is deleted (how many days after the last update). You can configure this parameter when uploading an object. You can also modify it after the object is uploaded by using the metadata modification API. Example: x-obs-expires:3 Restrictions: The value must be greater than the number of days that have passed since the object was created. For example, if the object was uploaded 10 days ago, you must specify a value greater than 10. Value range: The value is an integer greater than 0. Default value: None |
x-obs-object-lock-mode | String | No, but required when x-obs-object-lock-retain-until-date is present. | Explanation: WORM mode applied to the object. Example: x-obs-object-lock-mode:COMPLIANCE Restrictions: Currently, only COMPLIANCE (compliance mode) is supported. This parameter must be used with x-obs-object-lock-retain-until-date. Value range: COMPLIANCE Default value: None |
x-obs-object-lock-retain-until-date | String | No, but required when x-obs-object-lock-mode is present. | Explanation: When the WORM policy of the object expires. Example: x-obs-object-lock-retain-until-date:2015-07-01T04:11:15Z Restrictions: The value must be a UTC time that complies with the ISO 8601 standard. Example: 2015-07-01T04:11:15Z This parameter must be used with x-obs-object-lock-mode. Value range: The time must be later than the current time. Default value: None |
Response Syntax
HTTP/1.1 status_codeContent-Type: application/xmlLocation: locationDate: dateETag: etag
Response Headers
The response to the request uses common headers. For details, see Table 1.
In addition to the common response headers, the headers listed in Table 3 may be used.
Header | Type | Description |
---|---|---|
x-obs-version-id | String | Explanation: Object version ID. Restrictions:
Value range: The value is automatically generated by the server. Default value: None |
Access-Control-Allow-Origin | String | Explanation: Returned if the request origin meets the CORS configured on the server. Restrictions: None Value range: The value that complies with the CORS Default value: None |
Access-Control-Allow-Headers | String | Explanation: Returned if the request headers meet the CORS configured on the server. Restrictions: None Value range: The value that complies with the CORS Default value: None |
Access-Control-Max-Age | Integer | Explanation: Value of MaxAgeSeconds in the CORS configuration on the server when CORS is configured for buckets. Restrictions: None Value range: An integer greater than or equal to 0, in seconds Default value: 3000 |
Access-Control-Allow-Methods | String | Explanation: If a bucket has CORS configured, and Access-Control-Request-Method in the request meets the CORS configuration on the server, the specified methods in the rule are returned. Restrictions: None Value range:
Default value: None |
Access-Control-Expose-Headers | String | Explanation: ExposeHeader in the CORS rules of the bucket. It specifies additional headers allowed in the response by a CORS rule. These headers provide extra information to clients. By default, a browser can access only headers Content-Length and Content-Type. If the browser needs to access other headers, you need to configure them as additional headers. Restrictions: Spaces, asterisks (*), ampersands (&), colons (:), less-than signs (<), and full-width characters are not allowed. Value range: None Default value: None |
x-obs-server-side-encryption | String | Explanation: The encryption method used by the server. Example: x-obs-server-side-encryption:kms Restrictions: This header is included in a response if SSE-KMS is used. Value range:
Default value: None |
x-obs-server-side-encryption-kms-key-id | String | Explanation: ID of a specified key used for SSE-KMS encryption. Restrictions: This header can only be used when you specify kms for the x-obs-server-side-encryption header. Default value: If you specify kms for encryption but do not specify a key ID, the default master key will be used. If there is not a default master key, OBS will create one and use it. |
x-obs-server-side-encryption-customer-algorithm | String | Explanation: The algorithm used for encryption. Example: x-obs-server-side-encryption-customer-algorithm:AES256 Restrictions: Only for SSE-C server-side encryption. Value range: AES256 Default value: None |
x-obs-server-side-encryption-customer-key-MD5 | String | Explanation: The MD5 value of the key used for encryption. Example: x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== Restrictions: Only for SSE-C server-side encryption. Value range: MD5 value of the key. Default value: None |
Response Elements
This response contains no elements.
Error Responses
No special error responses are returned. For details about error responses, see Table 2.
Sample Request: Uploading an Object Using POST
POST / HTTP/1.1Date: WED, 01 Jul 2015 04:15:23 GMTHost: examplebucket.obs.region.example.comContent-Type: multipart/form-data; boundary=7db143f50da2Content-Length: 2424Origin: www.example.comAccess-Control-Request-Headers:acc_header_1--7db143f50da2Content-Disposition: form-data; name="key"object01--7db143f50da2Content-Disposition: form-data; name="acl"public-read--7db143f50da2Content-Disposition: form-data; name="content-type"text/plain--7db143f50da2Content-Disposition: form-data; name="expires"WED, 01 Jul 2015 04:16:15 GMT--7db143f50da2Content-Disposition: form-data; name="AccessKeyId"14RZT432N80TGDF2Y2G2--7db143f50da2Content-Disposition: form-data; name="policy"ew0KICAiZXhaaXJhdGlvbiI6ICIyMDE1LTA3LTAxVDEyOjAwOjAwLjAwMFoiLA0KICAiY29uZGl0aW9ucyI6IFsNCiAgICB7ImJ1Y2tldCI6ICJleG1hcGxlYnVja2V0IiB9LA0KICAgIHsiYWNsIjogInB1YmxpYy1yZWFkIiB9LA0KICAgIHsiRXhaaXJlcyI6ICIxMDAwIiB9LA0KICAgIFsiZXEiLCAiJGtleSIsICJvYmplY3QwMSJdLA0KICAgIFsic3RhcnRzLXdpdGgiLCAiJENvbnRlbnQtVHlwZSIsICJ0ZXh0LyJdLA0KICBdDQp9DQo=--7db143f50da2Content-Disposition: form-data; name="signature"Vk6rwO0Nq09BLhvNSIYwSJTRQ+k=--7db143f50da2Content-Disposition: form-data; name="x-obs-persistent-headers"test:dmFsdWUx--7db143f50da2Content-Disposition: form-data; name="x-obs-grant-read"id=52f24s3593as5730ea4f722483579xxx--7db143f50da2Content-Disposition: form-data; name="x-obs-server-side-encryption"kms--7db143f50da2Content-Disposition: form-data; name="x-obs-website-redirect-location"http://www.example.com/--7db143f50da2Content-Disposition: form-data; name="file"; filename="C:\Testtools\UpLoadFiles\object\1024Bytes.txt"Content-Type: text/plain01234567890--7db143f50da2Content-Disposition: form-data; name="submit"Upload--7db143f50da2--
Sample Response: Uploading an Object Using POST
After CORS is configured for a bucket, the response contains the Access-Control-* information.
HTTP/1.1 204 No Contentx-obs-request-id: 90E2BA00C26C00000133B442A90063FDx-obs-id-2: OTBFMkJBMDBDMjZDMDAwMDAxMzNCNDQyQTkwMDYzRkRBQUFBQUFBQWJiYmJiYmJiAccess-Control-Allow-Origin: www.example.comAccess-Control-Allow-Methods: POST,GET,HEAD,PUTAccess-Control-Allow-Headers: acc_header_01Access-Control-Max-Age: 100Access-Control-Expose-Headers: exp_header_01Content-Type: text/xmlLocation: http://examplebucket.obs.region.example.com/object01Date: WED, 01 Jul 2015 04:15:23 GMTETag: "ab7abb0da4bca5323ab6119bb5dcd296"
Sample Request: Uploading an Object (with x-obs-acl and a Storage Class Specified)
Upload an object with the x-obs-acl, storage class, and redirection header fields carried in the request message.
Before encoding, the policy content is as follows:
{"expiration":"2018-07-17T04:54:35Z","conditions":[{"content-type":"text/plain"},{"x-obs-storage-class":"WARM"},{"success_action_redirect":"http://www.example.com"},{"x-obs-acl":"public-read"},["starts-with","$bucket",""],["starts-with","$key",""]]}
Sample request:
POST / HTTP/1.1Host: examplebucket.obs.region.example.comAccept-Encoding: identityContent-Length: 947Content-Type: multipart/form-data; boundary=9431149156168User-Agent: OBS/Test--9431149156168Content-Disposition: form-data; name="x-obs-acl"public-read--9431149156168Content-Disposition: form-data; name="AccessKeyId"H4IPJX0TQTHTHEBQQCEC--9431149156168Content-Disposition: form-data; name="key"my-obs-object-key-demo--9431149156168Content-Disposition: form-data; name="signature"WNwv8P1ZiWdqPQqjXeLmAfzPDAI=--9431149156168Content-Disposition: form-data; name="policy"eyJleHBpcmF0aW9uIjoiMjAxOC0wNy0xN1QwODozNDoyM1oiLCAiY29uZGl0aW9ucyI6W3siY29udGVudC10eXBlIjoidGV4dC9wbGFpbiJ9LHsieC1vYnMtYWNsIjoicHVibGljLXJlYWQifSxbInN0YXJ0cy13aXRoIiwgIiRidWNrZXQiLCAiIl0sWyJzdGFydHMtd2l0aCIsICIka2V5IiwgIiJdXX0=--9431149156168Content-Disposition: form-data; name="content-type"text/plain--9431149156168Content-Disposition: form-data; name="file"; filename="myfile"Content-Type: text/plainc2c6cd0f-898e-11e8-aab6-e567c91fb54152b8e8a0-8481-4696-96f3-910635215a78--9431149156168--
Sample Response: Uploading an Object (with x-obs-acl and a Storage Class Specified)
HTTP/1.1 204 No ContentServer: OBSLocation: http://examplebucket.obs.region.example.com/my-obs-object-key-demoETag: "17a83fc8d431273405bd266114b7e034"x-obs-request-id: 5DEB00000164A728A7C7F4E032214CFAx-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCSwj2PcBE0YcoLHUDO7GSj+rVByzjflADate: Tue, 17 Jul 2018 07:33:36 GMT
Sample Request: Using a Token for Authentication
POST / HTTP/1.1Content-Type:multipart/form-data; boundary=9431149156168Content-Length: 634Host: examplebucket.obs.region.example.com--9431149156168Content-Disposition: form-data; name="key"obj01--9431149156168Content-Disposition: form-data; name="token"UDSIAMSTUBTEST002538:XsVcTzR2/A284oE4VH9qPndGcuE=:eyJjb25kaXRpb25zIjogW3siYnVja2V0IjogInRlc3QzMDAzMDU4NzE2NjI2ODkzNjcuMTIifSwgeyJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24veG1sIn0sIFsiZXEiLCAiJGtleSIsICJvYmoudHh0Il1dLCAiZXhwaXJhdGlvbiI6ICIyMDIyLTA5LTA5VDEyOjA5OjI3WiJ9--9431149156168Content-Disposition: form-data; name="file"; filename="myfile"Content-Type: text/plain01234567890--9431149156168--Content-Disposition: form-data; name="submit"Upload to OBS
Sample Response: Using a Token for Authentication
HTTP/1.1 204 No ContentServer: OBSLocation: http://examplebucket.obs.region.example.com/my-obs-object-key-demoETag: "7eda50a430fed940023acb9c4c6a2fff"x-obs-request-id: 000001832010443D80F30B649B969C47x-obs-id-2: 32AAAUgAIAABAAAQAAEAABAAAQAAEAABCTj0yO9KJd5In+i9pzTgCDVG9vMnk7O/Date: Fri,09Sep 2022 02: 24:40 GMT
Sample Request: Specifying an Object Expiration Time
POST / HTTP/1.1Date: WED, 01 Jul 2015 04:15:23 GMTHost: examplebucket.obs.region.example.comContent-Type: multipart/form-data; boundary=148828969260233905620870Content-Length: 1639Origin: www.example.comAccess-Control-Request-Headers:acc_header_1--148828969260233905620870Content-Disposition: form-data; name="key"object01--148828969260233905620870Content-Disposition: form-data; name="ObsAccessKeyId"55445349414d5354554254455354303030303033--148828969260233905620870Content-Disposition: form-data; name="signature"396246666f6f42793872792f7a3958524f6c44334e4e69763950553d--7db143f50da2--148828969260233905620870Content-Disposition: form-data; name="policy"65794a6c65484270636d463061573975496a6f694d6a41794d7930774e6930784e565178...--148828969260233905620870Content-Disposition: form-data; name="x-obs-expires"4--148828969260233905620870Content-Disposition: form-data; name="file"; filename="test.txt"Content-Type: text/plain01234567890--148828969260233905620870Content-Disposition: form-data; name="submit"Upload--148828969260233905620870--
Sample Response: Specifying an Object Expiration Time
HTTP/1.1 204 No ContentServer: OBSDate: Thu, 15 Jun 2023 12:39:03 GMTConnection: keep-aliveLocation: http://examplebucket.obs.region.example.com/my-obs-object-key-demox-obs-expiration: expiry-date="Tue, 20 Jun 2023 00:00:00 GMT"ETag: "d41d8cd98f00b204e9800998ecf8427e"x-obs-request-id: 00000188BF11049553064911000FC30Dx-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCSwj2PcBE0YcoLHUDO7GSj+rVByzjflAx-forward-status: 0x40020000000001x-dae-api-type: REST.POST.OBJECT
Sample Request: Specifying a Status Code
Set the status code of a successful action to 200.
POST /srcbucket HTTP/1.1User-Agent: PostmanRuntime/7.26.8Accept: */*Postman-Token: 667dcc44-1c48-41ba-9e41-9f87d8975089Host: obs.region.example.comAccept-Encoding: gzip, deflate, brConnection: keep-aliveContent-Type: multipart/form-data; boundary=--------------------------285613759795901770404350Content-Length: 1134----------------------------285613759795901770404350Content-Disposition: form-data; name="key"obj----------------------------285613759795901770404350Content-Disposition: form-data; name="ObsAccessKeyId"XXXXXXXXXXXXXXX000003----------------------------285613759795901770404350Content-Disposition: form-data; name="signature"9rc4bVhDPQ7eHtw17hWtYxLnBWU=----------------------------285613759795901770404350Content-Disposition: form-data; name="policy"eyJleHBpcmF0aW9uIjoiMjAyMy0wNi0xNVQxNDoxMTozNFoiLCAiY29uZGl0aW9ucyI6W3siYnVja2V0Ijoic3JjYnVja2V0MiJ9LHsic3VjY2Vzc19hY3Rpb25fc3RhdHVzIjoiMjAwIn0seyJjb250ZW50LXR5cGUiOiJ0ZXh0L3BsYWluIn0seyJrZXkiOiIzMzMifSxdfQ==----------------------------285613759795901770404350Content-Disposition: form-data; name="success_action_status"200----------------------------285613759795901770404350Content-Disposition: form-data; name="file"; filename="test.txt"Content-Type: text/plain----------------------------285613759795901770404350Content-Disposition: form-data; name="submit"Upload to OBS----------------------------285613759795901770404350--
Sample Response: Specifying a Status Code
Response to the configuration of success status code 200
HTTP/1.1 200 OKServer: OBSDate: Thu, 15 Jun 2023 13:12:51 GMTContent-Length: 0Connection: keep-aliveLocation: http://obs.region.example.com/srcbucket/objETag: "d41d8cd98f00b204e9800998ecf8427e"x-obs-request-id: 00000188BF2FF55F5306426E000FE366x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCScDjcXgZ7oMYSVnZnk4+HrClVwLVPTix-forward-status: 0x40020000000001x-dae-api-type: REST.POST.OBJECT
Sample Request: Uploading an Object (with a WORM Retention Policy Configured)
POST /srcbucket HTTP/1.1User-Agent: PostmanRuntime/7.26.8Accept: */*Postman-Token: 4c2f4c7e-2e0b-46c0-b1a7-4a5da560b6a1Host: obs.region.example.comAccept-Encoding: gzip, deflate, brConnection: keep-aliveContent-Type: multipart/form-data; boundary=--------------------------940435396775653808840608Content-Length: 1409----------------------------940435396775653808840608Content-Disposition: form-data; name="key"obj----------------------------940435396775653808840608Content-Disposition: form-data; name="ObsAccessKeyId"XXXXXXXXXXXXXXX000003----------------------------940435396775653808840608Content-Disposition: form-data; name="signature"X/7QiyMYUvxUWk0R5fToeTcgMMU=----------------------------940435396775653808840608Content-Disposition: form-data; name="policy"eyJleHBpcmF0aW9uIjoiMjAyMy0wNi0xNVQxNDoyMjo1MVoiLCAiY29uZGl0aW9ucyI6W3sieC1vYnMtb2JqZWN0LWxvY2stcmV0YWluLXVudGlsLWRhdGUiOiJUaHUsIDIwIEp1biAyMDIzIDEzOjEyOjUxIEdNVCJ9LHsieC1vYnMtb2JqZWN0LWxvY2stbW9kZSI6IkNPTVBMSUFOQ0UifSx7ImJ1Y2tldCI6InNyY2J1Y2tldDIifSx7ImNvbnRlbnQtdHlwZSI6InRleHQvcGxhaW4ifSx7ImtleSI6IjMzMyJ9LF19----------------------------940435396775653808840608Content-Disposition: form-data; name="x-obs-object-lock-mode"COMPLIANCE----------------------------940435396775653808840608Content-Disposition: form-data; name="x-obs-object-lock-retain-until-date"Thu, 20 Jun 2023 13:12:51 GMT----------------------------940435396775653808840608Content-Disposition: form-data; name="file"; filename="test.txt"Content-Type: text/plain----------------------------940435396775653808840608Content-Disposition: form-data; name="submit"Upload to OBS----------------------------940435396775653808840608--
Sample Response: Uploading an Object (with a WORM Retention Policy Configured)
HTTP/1.1 204 No ContentServer: OBSDate: Thu, 15 Jun 2023 13:24:03 GMTConnection: keep-aliveLocation: http://obs.region.example.com/srcbucket/objETag: "d41d8cd98f00b204e9800998ecf8427e"x-obs-request-id: 00000188BF3A36EE5306427D000FEE0Ax-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCS/5pj0p0hAQcDVI3B6E5y167zy4eAQvx-forward-status: 0x40020000000001x-dae-api-type: REST.POST.OBJECT
- Functions
- Differences Between PUT and POST Methods
- Versioning
- WORM
- Request Syntax
- Request Parameters
- Request Headers
- Request Elements
- Response Syntax
- Response Headers
- Response Elements
- Error Responses
- Sample Request: Uploading an Object Using POST
- Sample Response: Uploading an Object Using POST
- Sample Request: Uploading an Object (with x-obs-acl and a Storage Class Specified)
- Sample Response: Uploading an Object (with x-obs-acl and a Storage Class Specified)
- Sample Request: Using a Token for Authentication
- Sample Response: Using a Token for Authentication
- Sample Request: Specifying an Object Expiration Time
- Sample Response: Specifying an Object Expiration Time
- Sample Request: Specifying a Status Code
- Sample Response: Specifying a Status Code
- Sample Request: Uploading an Object (with a WORM Retention Policy Configured)
- Sample Response: Uploading an Object (with a WORM Retention Policy Configured)