Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2023-07-11 GMT+08:00

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.

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.

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.

Tabla 1 Encabezados de solicitud

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.

  • Si el valor es válido y la solicitud se realiza correctamente, OBS devuelve el código de estado 303. Location contiene success_action_redirect, así como el nombre del bucket, el nombre del objeto y el objeto ETag.
  • Si este parámetro no es válido, OBS omite este parámetro. El código de respuesta es 204, y Location es la dirección del objeto.

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.

Tabla 2 Parámetros de cabecera de respuesta adicionales

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