Carga de objetos - PUT
Funciones
Después de la creación del bucket en OBS, puede utilizar esta operación para cargar un objeto en el bucket. Al cargar un objeto, se agrega a un bucket. Esto requiere que los usuarios tengan la operación de escritura.
![](https://support.huaweicloud.com/intl/es-us/api-obs/public_sys-resources/note_3.0-es-us.png)
El nombre de cada objeto de un bucket debe ser único.
Si el control de versiones no está habilitado, si un objeto que se va a cargar tiene el mismo nombre que un objeto existente en el bucket, el objeto recién cargado sobrescribirá al existente. Para proteger los datos de daños durante la transmisión, puede agregar el parámetro Content-MD5 en el encabezado de solicitud. Después de recibir la solicitud, OBS realizará una comprobación de consistencia MD5. Si los dos valores MD5 son inconsistentes, el sistema devuelve un mensaje de error.
También puede especificar el valor del parámetro x-obs-acl para configurar una política de control de acceso para el objeto. Si no se especifica el parámetro x-obs-acl cuando un usuario anónimo carga un objeto, todos los usuarios de OBS pueden acceder al objeto de forma predeterminada.
Esta operación admite la encriptación del lado del servidor.
Para una sola carga, el tamaño del objeto que se va a cargar varía [0, 5 GB]. Para cargar un archivo de más de 5 GB, consulte Operaciones en carga multiparte.
OBS no tiene carpetas reales. Para facilitar la gestión de datos, OBS proporciona un método para simular una carpeta añadiendo una barra diagonal (/) al nombre del objeto, por ejemplo, test/123.jpg. Puede simular test como una carpeta y 123.jpg como el nombre de un archivo bajo la carpeta test. Sin embargo, la clave del objeto sigue siendo test/123.jpg. Los objetos nombrados en este formato aparecen como carpetas en la consola.
Diferencias entre los métodos PUT y POST
Los parámetros se pasan a través de la cabecera de petición si el método PUT se usa para cargar objetos; si el método POST se usa para cargar objetos, los parámetros se pasan a través del campo de formulario en el cuerpo del mensaje.
Con el método PUT, debe especificar el nombre de objeto en la URL, pero el nombre de objeto no es necesario con el método POST, que utiliza el nombre de dominio de bucket como URL. Las líneas de solicitud de los dos métodos son las siguientes:
PUT /ObjectName HTTP/1.1
POST / HTTP/1.1
For details about POST upload, see Carga de objetos - POST.
Control de versiones
Si el control de versiones está habilitado para un bucket, el sistema genera automáticamente un ID de versión único para el objeto solicitado en este bucket y devuelve el ID de versión en el encabezado de respuesta x-obs-version-id. Si el control de versiones está suspendido para el bucket, la versión del objeto es null. Para obtener más información sobre los estados de control de versiones de un bucket, consulte Configuración del control de versiones para un bucket.
Sintaxis de solicitud
1 2 3 4 5 6 7 |
PUT /ObjectName HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com Content-Type: application/xml Content-Length: length Authorization: authorization Date: date <Optional Additional Header> <object Content> |
Parámetros de solicitud
Esta solicitud no contiene ningún parámetro.
Encabezados de solicitud
Esta solicitud utiliza encabezados comunes. Para más detalles, consulte Tabla 3. La solicitud puede utilizar encabezados adicionales, como se indica en Tabla 1.
![](https://support.huaweicloud.com/intl/es-us/api-obs/public_sys-resources/note_3.0-es-us.png)
OBS admite los seis encabezados de solicitud HTTP: Cache-Control, Expires, Content-Encoding, Content-Disposition, Content-Type y Content-Language. Si estos encabezados se incluyen en una solicitud de carga de objetos, sus valores se guardan. También puede llamar a la API de modificación de metadatos, proporcionada por OBS, para cambiar los valores de los seis encabezados. Cuando se descarga o consulta el objeto, los valores guardados se establecen para los encabezados HTTP correspondientes y se devuelven al cliente.
Encabezado |
Descripción |
Obligatorio |
---|---|---|
Content-MD5 |
Resumen MD5 de 128 bits codificado en base64 del mensaje de acuerdo con RFC 1864. Tipo: string Ejemplo: n58IG6hfM7vqI4K0vnWpog== |
No |
x-obs-acl |
Al crear un objeto, puede agregar este encabezado para establecer la política de control de permisos para el objeto. Las políticas comunes predefinidas son las siguientes: private, public-read, y public-read-write. Para obtener más información sobre cada política, consulte la configuración de ACL mediante campos de encabezado en ACL. Tipo: string Nota: Este encabezado es una política predefinida expresada en una string de caracteres. Ejemplo: x-obs-acl: public-read |
No |
x-obs-grant-read |
Al crear un objeto, puede utilizar este encabezado para autorizar a todos los usuarios de una cuenta el permiso para leer objetos y obtener metadatos de objeto. Tipo: string Ejemplo: x-obs-grant-read: id=domainID Si hay varias cuentas autorizadas, sepáralas con comas (,). |
No |
x-obs-grant-read-acp |
Al crear un objeto, puede utilizar este encabezado para autorizar a todos los usuarios de una cuenta el permiso para obtener la ACL del objeto. Tipo: string Ejemplo: x-obs-grant-read-acp: id=domainID Si hay varias cuentas autorizadas, sepáralas con comas (,). |
No |
x-obs-grant-write-acp |
Al crear un objeto, puede utilizar este encabezado para autorizar a todos los usuarios de una cuenta el permiso para escribir el objeto ACL. Tipo: string Ejemplo: x-obs-grant-write-acp: id=domainID Si hay varias cuentas autorizadas, sepáralas con comas (,). |
No |
x-obs-grant-full-control |
Al crear un objeto, puede utilizar este encabezado para autorizar a todos los usuarios de una cuenta el permiso para leer el objeto, obtener los metadatos del objeto, obtener la ACL del objeto y escribir la ACL del objeto. Tipo: string Ejemplo: x-obs-grant-full-control: id=domainID Si hay varias cuentas autorizadas, sepáralas con comas (,). |
No |
x-obs-storage-class |
Al crear un objeto, puede utilizar este encabezado para especificar la clase de almacenamiento para el objeto. Si no utiliza este encabezado, la clase de almacenamiento de objetos es la clase de almacenamiento predeterminada del bucket. Tipo: string OBS proporciona tres clases de almacenamiento: Standard (STANDARD), Infrequent Access (WARM), and Archive (COLD). Por lo tanto, los valores para este elemento pueden ser STANDARD, WARM y COLD. Los valores distinguen entre mayúsculas y minúsculas. Ejemplo: x-obs-storage-class: STANDARD |
No |
x-obs-meta-* |
Al crear un objeto, puede usar un encabezado que comience con x-obs-meta- para definir metadatos de objeto en una solicitud HTTP. Los metadatos definidos por el usuario se devolverán en el encabezado de respuesta cuando recupere o consulte los metadatos del objeto. Para obtener más información, consulte Gestión de metadatos de objetos. Tipo: string Ejemplo: x-obs-meta-test: test metadata |
No |
x-obs-persistent-headers |
When creating an object, you can add the x-obs-persistent-headers header in an HTTP request to specify one or more user-defined response headers. User-defined response headers will be returned in the response header when you retrieve the object or query the object metadata. Type: string Format: x-obs-persistent-headers: key1:base64_encode(value1),key2:base64_encode(value2)... Note: Items, such as key1 and key2, are user-defined headers. If they contain non-ASCII or unrecognizable characters, they can be encoded using URL or Base64. The server processes these headers as character strings, but does not decode them. Items, such as value1 and value2 are the values of the corresponding headers. base64_encode indicates that the value is encoded using Base64. A user-defined header and its Base64-encoded value are connected using a colon (:) to form a key-value pair. All key-value pairs are separated with a comma (,) and are placed in the x-obs-persistent-headers header. The server then decodes the uploaded value. Example: x-obs-persistent-headers: key1:dmFsdWUx,key2:dmFsdWUy The returned header for downloading the object or obtaining the object metadata is key1:value1 or key2:value2 respectively. Constraints: 1. User-defined response headers specified in this way cannot be prefixed with x-obs-, that is, you can use key1, instead of x-obs-key1, as the prefix. 2. The standard HTTP header, for example, host/content-md5/origin/range/Content-Disposition, cannot be used. 3. The total length of the header and user-defined metadata cannot exceed 8 KB. 4. If the same keys are transferred, separate values with commas (,) and place these values in the same key for return. |
No |
x-obs-website-redirect-location |
Si un bucket está configurado con la función de alojamiento de sitios web estático, redirigirá las solicitudes para el objeto a otro objeto en el mismo bucket o a una URL externa. OBS almacena el valor de este encabezado en los metadatos del objeto. En el siguiente ejemplo, el encabezado de solicitud establece la redirección a un objeto (anotherPage.html) en el mismo bucket: x-obs-website-redirect-location:/anotherPage.html En el ejemplo siguiente, el encabezado de solicitud establece la redirección del objeto a una URL externa: x-obs-website-redirect-location:http://www.example.com/ Tipo: string No hay ningún valor predeterminado. Restricción: el valor debe tener el prefijo de una barra diagonal (/), http://, o https://. La longitud del valor no puede superar los 2 KB. |
No |
x-obs-server-side-encryption |
Indica que se utiliza SSE-KMS. Tipo: string Ejemplo: x-obs-server-side-encryption:kms |
Si cualquier proceso es anormal: Este encabezado es necesario cuando se utiliza SSE-KMS. |
x-obs-server-side-encryption-kms-key-id |
Identificación de la clave principal. Este encabezado se utiliza en modo SSE-KMS. Si el cliente no proporciona la clave principal, se utilizará la clave principal predeterminada. Tipo: string Se admiten los dos formatos siguientes: 1.regionID:domainID:key/key_id 2. key_id regionID es el ID de la región a la que pertenece la clave. domainID es el ID de cuenta del tenant al que pertenece la clave. key_id es el ID de clave creado en DEW. Ejemplo: 1. x-obs-server-side-encryption-kms-key-id: region:domainiddomainiddomainiddoma0001:key/4f1cd4de-ab64-4807-920a-47fc42e7f0d0 or 2. x-obs-server-side-encryption-kms-key-id:4f1cd4de-ab64-4807-920a-47fc42e7f0d0 |
No |
x-obs-server-side-encryption-customer-algorithm |
Algoritmo de encriptación. La cabecera se utiliza en modo SSE-C. Tipo: string Ejemplo: x-obs-server-side-encryption-customer-algorithm:AES256 Restricciones: Este encabezado debe usarse junto con x-obs-server-side-encryption-customer-key y x-obs-server-side-encryption-customer-key-MD5. |
No. Esta cabecera sólo se requiere cuando se usa SSE-C. |
x-obs-server-side-encryption-customer-key |
Indica una clave utilizada para cifrar objetos. La cabecera se utiliza en modo SSE-C. Esta clave se utiliza para cifrar objetos. Tipo: string Ejemplo: x-obs-server-side-encryption-customer-key:K7QkYpBkM5+hcs27fsNkUnNVaobncnLht/rCB2o/9Cw= Restricciones: Este encabezado es una clave de 256 bits codificada en base64 y debe usarse junto con x-obs-server-side-encryption-customer-algorithm y x-obs-server-side-encryption-customer-key-MD5. |
No. Esta cabecera es necesaria cuando se usa SSE-C. |
x-obs-server-side-encryption-customer-key-MD5 |
Indica el valor MD5 de una clave utilizada para cifrar objetos. La cabecera se utiliza en modo SSE-C. El valor MD5 se utiliza para comprobar si se produce algún error durante la transmisión de la clave. Tipo: string Ejemplo: x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== Restricciones: Este encabezado es una string codificada en Base64 de 128 bits y debe usarse junto con x-obs-server-side-encryption-customer-algorithm y x-obs-server-side-encryption-customer-key. |
No. Esta cabecera es necesaria cuando se usa SSE-C. |
success-action-redirect |
Indica la dirección (URL) a la que se redirige una solicitud respondida correctamente.
Tipo: string |
No |
x-obs-expires |
Indica el tiempo de caducidad de un objeto, en días. Un objeto se eliminará automáticamente una vez que caduque (calculado a partir de la última hora de modificación del objeto). Este campo solo se puede configurar cuando se carga un objeto y no se puede modificar a través de la API de modificación de metadatos. Tipo: integer Ejemplo: x-obs-expires:3 |
No |
Elementos de solicitud.
Esta solicitud no contiene elemento. Su cuerpo contiene solo el contenido del objeto solicitado.
Sintaxis de respuesta
1 2 3 |
HTTP/1.1 status_code Content-Length: length Content-Type: type |
Encabezados de respuesta
La respuesta a la solicitud utiliza encabezados comunes. Para más detalles, consulte Tabla 1.
Además de los encabezados de respuesta comunes, también se pueden usar los siguientes encabezados de mensaje. Para más detalles, consulte Tabla 2.
Encabezado |
Descripción |
---|---|
x-obs-version-id |
ID de versión del objeto. Si el control de versiones está habilitado para el bucket, se devolverá el número de versión del objeto. Tipo: string |
x-obs-server-side-encryption |
Este encabezado se incluye en una respuesta si se utiliza SSE-KMS. Tipo: string Ejemplo: x-obs-server-side-encryption:kms |
x-obs-server-side-encryption-kms-key-id |
Indica el ID de clave principal. Este encabezado se incluye en una respuesta si se utiliza SSE-KMS. Tipo: string Formato: regionID:domainID:key/key_id regionID es el ID de la región a la que pertenece la clave. domainID es el ID de cuenta del tenant al que pertenece la clave. key_id es el ID de clave utilizado en esta encriptación. Ejemplo: x-obs-server-side-encryption-kms-key-id:region:domainiddomainiddomainiddoma0001:key/4f1cd4de-ab64-4807-920a-47fc42e7f0d0 |
x-obs-server-side-encryption-customer-algorithm |
Un algoritmo de encriptación. Este encabezado se incluye en una respuesta si se utiliza SSE-C. Tipo: string Ejemplo: x-obs-server-side-encryption-customer-algorithm:AES256 |
x-obs-server-side-encryption-customer-key-MD5 |
El valor MD5 de una clave utilizada para cifrar objetos. Este encabezado se incluye en una respuesta si se utiliza SSE-C. Tipo: string Ejemplo: x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== |
x-obs-storage-class |
Este encabezado se devuelve cuando la clase de almacenamiento de un objeto no es Standard. Opciones de valor: WARM y COLD Tipo: string |
Elementos de respuesta
Esta respuesta no contiene elemento.
Respuestas de error
No se devuelven respuestas de error especiales. Para obtener más información sobre las respuestas de error, consulte Tabla 2.
Solicitud de muestra 1
Subir un objeto.
1 2 3 4 5 6 7 8 9 10 |
PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:11:15 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:gYqplLq30dEX7GMi2qFWyjdFsyw= Content-Length: 10240 Expect: 100-continue [1024 Byte data content] |
Respuesta de muestra 1
1 2 3 4 5 6 7 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF2600000164364C10805D385E1E3C67 ETag: "d41d8cd98f00b204e9800998ecf8427e" x-obs-id-2: 32AAAWJAMAABAAAQAAEAABAAAQAAEAABCTzu4Jp2lquWuXsjnLyPPiT3cfGhqPoY Date: WED, 01 Jul 2015 04:11:15 GMT Content-Length: 0 |
Solicitud de muestra 2
Establecer la ACL al cargar un objeto.
1 2 3 4 5 6 7 8 9 10 11 |
PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:13:55 GMT x-obs-grant-read:id=52f24s3593as5730ea4f722483579ai7,id=a93fcas852f24s3596ea8366794f7224 Authorization: OBS H4IPJX0TQTHTHEBQQCEC:gYqplLq30dEX7GMi2qFWyjdFsyw= Content-Length: 10240 Expect: 100-continue [1024 Byte data content] |
Respuesta de muestra 2
1 2 3 4 5 6 7 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: BB7800000164845759E4F3B39ABEE55E ETag: "d41d8cd98f00b204e9800998ecf8427e" x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSReVRNuas0knI+Y96iXrZA7BLUgj06Z Date: WED, 01 Jul 2015 04:13:55 GMT Content-Length: 0 |
Solicitud de muestra 3
Subir objetos cuando el control de versiones está habilitado para el bucket.
1 2 3 4 5 6 7 8 9 10 11 |
PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:17:12 GMT x-obs-storage-class: WARM Authorization: OBS H4IPJX0TQTHTHEBQQCEC:uFVJhp/dJqj/CJIVLrSZ0gpw3ng= Content-Length: 10240 Expect: 100-continue [1024 Byte data content] |
Respuesta de muestra 3
1 2 3 4 5 6 7 8 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: DCD2FC9CAB78000001439A51DB2B2577 ETag: "d41d8cd98f00b204e9800998ecf8427e" X-OBS-ID-2: GcVgfeOJHx8JZHTHrRqkPsbKdB583fYbr3RBbHT6mMrBstReVILBZbMAdLiBYy1l Date: WED, 01 Jul 2015 04:17:12 GMT x-obs-version-id: AAABQ4q2M9_c0vycq3gAAAAAVURTRkha Content-Length: 0 |
Solicitud de muestra 4
MD5 se transporta cuando se carga un objeto.
1 2 3 4 5 6 7 8 9 10 11 |
PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:17:50 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:uFVJhp/dJqj/CJIVLrSZ0gpw3ng= Content-Length: 10 Content-MD5: 6Afx/PgtEy+bsBjKZzihnw== Expect: 100-continue 1234567890 |
Respuesta de muestra 4
1 2 3 4 5 6 7 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: BB7800000164B165971F91D82217D105 X-OBS-ID-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCSEKhBpS4BB3dSMNqMtuNxQDD9XvOw5h ETag: "1072e1b96b47d7ec859710068aa70d57" Date: WED, 01 Jul 2015 04:17:50 GMT Content-Length: 0 |
Solicitud de muestra 5
La función de alojamiento de sitios web está configurada para el bucket. Configure la redirección para la descarga del objeto al cargar el objeto.
1 2 3 4 5 6 7 8 9 10 11 |
PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:17:12 GMT x-obs-website-redirect-location: http://www.example.com/ Authorization: OBS H4IPJX0TQTHTHEBQQCEC:uFVJhp/dJqj/CJIVLrSZ0gpw3ng= Content-Length: 10240 Expect: 100-continue [1024 Byte data content] |
Respuesta de muestra 5
1 2 3 4 5 6 7 8 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: DCD2FC9CAB78000001439A51DB2B2577 x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTmxB5ufMj/7/GzP8TFwTbp33u0xhn2Z ETag: "1072e1b96b47d7ec859710068aa70d57" Date: WED, 01 Jul 2015 04:17:12 GMT x-obs-version-id: AAABQ4q2M9_c0vycq3gAAAAAVURTRkha Content-Length: 0 |
Solicitud de muestra 6
Subir un objeto y llevar la firma en la URL.
PUT /object02?AccessKeyId=H4IPJX0TQTHTHEBQQCEC&Expires=1532688887&Signature=EQmDuOhWLUrzrzRNZxwS72CXeXM%3D HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Content-Length: 1024 [1024 Byte data content]
Respuesta de muestra 6
1 2 3 4 5 6 7 8 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: DCD2FC9CAB78000001439A51DB2B2577 x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTmxB5ufMj/7/GzP8TFwTbp33u0xhn2Z ETag: "1072e1b96b47d7ec859710068aa70d57" Date: Fri, 27 Jul 2018 10:52:31 GMT x-obs-version-id: AAABQ4q2M9_c0vycq3gAAAAAVURTRkha Content-Length: 0 |
Solicitud de muestra 7
Subir un objeto de una clase de almacenamiento especificada.
1 2 3 4 5 6 7 8 9 10 11 |
PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:15:07 GMT x-obs-storage-class: WARM Authorization: OBS H4IPJX0TQTHTHEBQQCEC:uFVJhp/dJqj/CJIVLrSZ0gpw3ng= Content-Length: 10240 Expect: 100-continue [1024 Byte data content] |
Respuesta de muestra 7
1 2 3 4 5 6 7 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: BB7800000164846A2112F98BF970AA7E ETag: "d41d8cd98f00b204e9800998ecf8427e" x-obs-id-2: a39E0UgAIAABAAAQAAEAABAAAQAAEAABCTPOUJu5XlNyU32fvKjM/92MQZK2gtoB Date: WED, 01 Jul 2015 04:15:07 GMT Content-Length: 0 |