Descarga de objetos
Funciones
Esta operación descarga objetos desde OBS. Antes de utilizar esta operación GET, compruebe que tiene el permiso de lectura para el objeto de destino. Si el propietario del objeto ha concedido a usuarios anónimos el permiso de lectura para el objeto, los usuarios anónimos pueden tener acceso a este objeto sin utilizar el campo de encabezado de autenticación.
Encriptación del lado del servidor
Si el objeto cargado en el servidor se cifra en el servidor utilizando la clave de encriptación proporcionada por el cliente, la descarga del objeto requiere incluir la clave de encriptación en el mensaje.
Control de versiones
De forma predeterminada, la operación GET devuelve la versión actual de un objeto. Si la versión actual del objeto es un marcador de eliminación, OBS devuelve un código que significa que no existe el objeto. Para obtener un objeto de una versión especificada, el parámetro versionId se puede utilizar para especificar la versión deseada.
Objetos de Archive o Deep Archive
Si el objeto que desea descargar está en la clase de almacenamiento Archive o Deep Archive, asegúrese de que este objeto se ha restaurado antes de descargarlo. La respuesta varía dependiendo del estado de restauración del objeto. Si se ha restaurado un objeto, el encabezado x-obs-restore (que indica la fecha de caducidad del objeto) se devuelve cuando el objeto se descarga correctamente. Si envía una solicitud para descargar objetos de Archive or Deep Archive que no se restauran o se están restaurando, se devolverá un error 403 Prohibido.
Sintaxis de solicitud
1 2 3 4 5 6 |
GET /ObjectName HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com Date: date Authorization: authorization Range:bytes=byte_range <Optional Additional Header> |
El campo es opcional. Si no existe, puede obtener todo el contenido.
Parámetros de solicitud
En una solicitud GET, puede anular los valores de un conjunto de encabezados de mensaje utilizando los parámetros de solicitud. Los encabezados de mensaje que puede reemplazar son Content-Type, Content-Language, Expires, Cache-Control, Content-Disposition, y Content-Encoding. Si el objeto de destino tiene varias versiones, utilice el parámetro versionId para especificar la versión que se va a descargar. Para obtener más información, véase Tabla 1.
OBS no procesa la Accept-Encoding incluida en una solicitud ni comprime o descomprime los datos cargados. El cliente determina si debe comprimir o descomprimir los datos. Algunos clientes HTTP pueden descomprimir datos basados en la codificación de contenido devuelto por el servidor. El programa cliente necesita determinar si descomprimir y cómo descomprimir los datos. Para descomprimir los datos, puede modificar Content-Encoding (los metadatos del objeto almacenados en OBS) o reescribir Content-Encoding que se descarga el objeto. Si una solicitud de descarga de objeto especifica el encabezado de reescritura, el encabezado de mensaje HTTP estándar devuelto por OBS está sujeto al contenido de reescritura especificado en la solicitud.
Parámetro |
Descripción |
Obligatorio |
---|---|---|
response-content-type |
Reescribe el encabezado Content-Type en la respuesta. Tipo: string |
No |
response-content-language |
Reescribe el encabezado Content-Language en la respuesta. Tipo: string |
No |
response-expires |
Reescribe el encabezado Expires en la respuesta. Tipo: string |
No |
response-cache-control |
Reescribe el encabezado Cache-Control en la respuesta. Tipo: string |
No |
response-content-disposition |
Reescribe el encabezado Content-Disposition en la respuesta. Tipo: string Ejemplo: response-content-disposition=attachment; filename*=utf-8''name1 En este ejemplo, el objeto descargado pasa a llamarse name1. Si el nuevo nombre contiene caracteres de ancho completo, debe estar codificado por URL. |
No |
response-content-encoding |
Reescribe el encabezado Content-Encoding en la respuesta. Tipo: string |
No |
versionId |
Indica el ID de versión del objeto cuyo contenido se obtiene. Tipo: string |
No |
x-image-process |
Servicio de procesamiento de imágenes. Un ejemplo es el siguiente: Comando: x-image-process=image/commands Estilo: x-image-process=style/stylename Para obtener más información, consulte la Guía de funciones de Image Processing. |
No |
attname |
Reescribe el encabezado Content-Disposition en la respuesta. Tipo: string Ejemplo: attname=name1 Cambie el nombre del objeto descargado como name1. |
No |
Encabezados de solicitud
Esta solicitud utiliza encabezados comunes. Además, puede agregar encabezados adicionales a esta solicitud. Tabla 2 describe los encabezados adicionales.
Encabezado |
Descripción |
Obligatorio |
---|---|---|
Range |
Obtiene el contenido del objeto dentro del ámbito definido por Range. Si el valor del parámetro no es válido, se obtiene todo el objeto. El valor Range comienza desde 0, y el valor máximo es igual a la longitud del objeto menos 1. El valor inicial de Range es obligatorio. Si solo se especifica el valor inicial, el sistema obtiene el contenido del objeto desde el valor inicial hasta el valor máximo predeterminado. Después de que se lleva el campo de encabezado Range, el valor de ETag en el mensaje de respuesta es la ETag del objeto en lugar de la ETag del objeto en el campo Range. Tipo: string bytes=byte_range Ejemplo 1: bytes=0-4 Ejemplo 2: bytes=1024 Ejemplo 3: bytes=10-20, 30-40 (rangos múltiples) |
No |
If-Modified-Since |
Devuelve el objeto solo si ha sido modificado desde el tiempo especificado por este encabezado. De lo contrario, se devuelve 304 Not Modified. Tipo: string de caracteres de tiempo HTTP que cumple con el formato especificado en http://www.ietf.org/rfc/rfc2616.txt |
No |
If-Unmodified-Since |
Devuelve el objeto solo si no ha sido modificado desde el tiempo especificado por este encabezado. De lo contrario, se devuelve 412 Precondition Failed. Tipo: string de caracteres de tiempo HTTP que cumple con el formato especificado en http://www.ietf.org/rfc/rfc2616.txt |
No |
If-Match |
Devuelve el objeto solo si su ETag es la misma que la especificada por este encabezado. De lo contrario, se devuelve 412 Precondition Failed. Tipo: string Ejemplo de ETag: 0f64741bf7cb1089e988e4585d0d3434 |
No |
If-None-Match |
Devuelve el objeto solo si su ETag es diferente de la especificada por este encabezado. De lo contrario, se devuelve 304 Not Modified. Tipo: string Ejemplo de ETag: 0f64741bf7cb1089e988e4585d0d3434 |
No |
x-obs-server-side-encryption-customer-algorithm |
Indica el algoritmo de encriptación cuando se utiliza SSE-C. Tipo: string Ejemplo: x-obs-server-side-encryption-customer-algorithm:AES256 Restricción: Este encabezado debe usarse junto con x-obs-server-side-encryption-customer-key y x-obs-server-side-encryption-customer-key-MD5. |
No. Este encabezado se requiere cuando se utiliza SSE-C. |
x-obs-server-side-encryption-customer-key |
Indica la clave para descifrar objetos cuando se utiliza SSE-C. Tipo: string Ejemplo: x-obs-server-side-encryption-customer-key:K7QkYpBkM5+hca27fsNkUnNVaobncnLht/rCB2o/9Cw= Restricción: 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. Este encabezado se requiere cuando se utiliza SSE-C. |
x-obs-server-side-encryption-customer-key-MD5 |
Indica el valor MD5 de la clave de encriptación cuando se utiliza 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== Restricción: Este encabezado es un valor MD5 de 128 bits codificado en Base64 y debe usarse junto con x-obs-server-side-encryption-customer-algorithm y x-obs-server-side-encryption-customer-key. |
No. Este encabezado se requiere cuando se utiliza SSE-C. |
Elementos de solicitud
Esta solicitud no implica ningún elemento.
Sintaxis de respuesta
1 2 3 4 5 6 7 8 |
HTTP/1.1 status_code Content-Type: type Date: date Content-Length: length Etag: etag Last-Modified: time <Object Content> |
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, los encabezados de mensaje enumerados en Tabla 3 puede ser usado.
Encabezado |
Descripción |
---|---|
x-obs-expiration |
Cuando un objeto tiene su regla de ciclo de vida, el tiempo de caducidad del objeto está sujeto a esta regla. Este campo de encabezado es usar expiry-date para describir la fecha de caducidad del objeto. Si la regla de ciclo de vida está configurada solo para todo el bucket, no para objetos individuales, el tiempo de expiración del objeto está sujeto a la regla de ciclo de vida del bucket. Este campo de encabezado utiliza expiry-date y rule-id para describir la información de caducidad detallada de los objetos. Si no se configura ninguna regla de ciclo de vida, este campo de encabezado no está contenido en la respuesta. Tipo: string |
x-obs-website-redirect-location |
Indica la ubicación redirigida. Si el bucket está configurado con información de sitio web, este parámetro se puede establecer para los metadatos de objeto de modo que el punto de conexión de sitio web evalúe la solicitud para el objeto como una redirección 301 a otro objeto en el mismo bucket o una URL externa. Tipo: string |
x-obs-delete-marker |
Indica si un objeto es un marcador de eliminación. Si el objeto no está marcado como eliminado, la respuesta no contiene este encabezado. Tipo: boolean Opciones de valor: true, false El valor predeterminado es false. |
x-obs-version-id |
ID de versión del objeto. Si el objeto no tiene ningún número de versión especificado, la respuesta no contiene este encabezado. Valor válido: string de caracteres Valor predeterminado: ninguno |
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 indica el ID de la región a la que pertenece la clave. domainID indica el ID del tenant al que pertenece la clave. key_id indica 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 |
Indica un algoritmo de descifrado. 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 |
Indica el valor MD5 de una clave utilizada para descifrar 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-object-type |
Si el objeto no es normal, se devuelve este campo de encabezado. El valor puede ser Appendable. Tipo: string |
x-obs-next-append-position |
Este campo de encabezado se devuelve cuando el objeto es un objeto anexable. Tipo: integer |
Elementos de respuesta
Esta respuesta no contiene elementos.
Respuestas de error
No se devuelven respuestas de error especiales. Para obtener más información sobre las respuestas de error, consulte Tabla 2.
Ejemplo de solicitud: Descarga de un objeto
1 2 3 4 5 6 |
GET /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:24:33 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s= |
Ejemplo de respuesta: Descarga de un objeto
1 2 3 4 5 6 7 8 9 10 11 12 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 8DF400000163D3F2A89604C49ABEE55E Accept-Ranges: bytes ETag: "3b46eaf02d3b6b1206078bb86a7b7013" Last-Modified: WED, 01 Jul 2015 01:20:29 GMT Content-Type: binary/octet-stream x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSQwxJ2I1VvxD/Xgwuw2G2RQax30gdXU Date: WED, 01 Jul 2015 04:24:33 GMT Content-Length: 4572 [4572 Bytes object content] |
Ejemplo de solicitud: Descarga de un rango especificado de un objeto
Descargar el rango especificado de un objeto (descargar un rango de un objeto).
1 2 3 4 5 6 7 |
GET /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: Mon, 14 Sep 2020 09:59:04 GMT Range:bytes=20-30 Authorization: OBS H4IPJX0TQTHTHEBQQCEC:mNPLWQMDWg30PTkAWiqJaLl3ALg= |
Descargar el rango especificado de un objeto (descargar varios rangos de un objeto).
1 2 3 4 5 6 7 |
GET /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: Mon, 14 Sep 2020 10:02:43 GMT Range:bytes=20-30,40-50 Authorization: OBS H4IPJX0TQTHTHEBQQCEC:ZwM7Vk2d7sD9o8zRsRKehgKQDkk= |
Ejemplo de respuesta: Descarga de un rango especificado de un objeto
Descargar el rango especificado de un objeto (descargar un rango de un objeto).
1 2 3 4 5 6 7 8 9 10 11 12 13 |
HTTP/1.1 206 Partial Content Server: OBS x-obs-request-id: 000001748C0DBC35802E360C9E869F31 Accept-Ranges: bytes ETag: "2200446c2082f27ed2a569601ca4e360" Last-Modified: Mon, 14 Sep 2020 01:16:20 GMT Content-Range: bytes 20-30/4583 Content-Type: binary/octet-stream x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSn2JHu4okx9NBRNZAvBGawa3lt3g31g Date: Mon, 14 Sep 2020 09:59:04 GMT Content-Length: 11 [ 11 Bytes object content] |
Descargar el rango especificado de un objeto (descargar varios rangos de un objeto).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
HTTP/1.1 206 Partial Content Server: OBS x-obs-request-id: 8DF400000163D3F2A89604C49ABEE55E Accept-Ranges: bytes ETag: "2200446c2082f27ed2a569601ca4e360" Last-Modified: Mon, 14 Sep 2020 01:16:20 GMT Content-Type: multipart/byteranges;boundary=35bcf444-e65f-4c76-9430-7e4a68dd3d26 x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSIBWFOVW8eeWujkqSnoIANC2mNR1cdF Date: Mon, 14 Sep 2020 10:02:43 GMT Content-Length: 288 --35bcf444-e65f-4c76-9430-7e4a68dd3d26 Content-type: binary/octet-stream Content-range: bytes 20-30/4583 [ 11 Bytes object content] --35bcf444-e65f-4c76-9430-7e4a68dd3d26 Content-type: binary/octet-stream Content-range: bytes 40-50/4583 [ 11 Bytes object content] --35bcf444-e65f-4c76-9430-7e4a68dd3d26 |
Ejemplo de solicitud: Descarga de una imagen redimensionada
1 2 3 4 5 6 |
GET /example.jpg?x-image-process=image/resize,w_100 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:20:51 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:9Nsx45WjaVxlLnxlO9awasXn83N= |
Respuesta de ejemplo: Descargar una imagen redimensionada
1 2 3 4 5 6 7 8 9 10 11 12 13 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 8DF400000163D3F2A89604C49ABEE55E x-image-process:image/resize,w_100 Accept-Ranges: bytes ETag: "3b46eaf02d3b6b1206078bb86a7b7013" Last-Modified: WED, 01 Jul 2015 01:20:29 GMT Content-Type: image/jpeg x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSQwxJ2I1VvxD/Xgwuw2G2RQax30gdXU Date: WED, 01 Jul 2015 04:20:51 GMT Content-Length: 49 [ 49 Bytes object content] |
Ejemplo de solicitud: Comprobación del valor ETag de un objeto
Descargar un objeto si su valor de ETag coincide.
1 2 3 4 5 6 7 |
GET /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:24:33 GMT If-Match: 682e760adb130c60c120da3e333a8b09 Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s= |
Ejemplo de respuesta: Comprobación del valor de ETag de un objeto (ETag desajuste)
Si el valor ETag del objeto no es 682e760adb130c60c120da3e333a8b09, el sistema muestra un mensaje de error de descarga.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
HTTP/1.1 412 Precondition Failed Server: OBS x-obs-request-id: 8DF400000163D3F2A89604C49ABEE55E Content-Type: application/xml x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSQwxJ2I1VvxD/Xgwuw2G2RQax30gdXU Date: WED, 01 Jul 2015 04:20:51 GMT <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Error> <Code>PreconditionFailed</Code> <Message>At least one of the pre-conditions you specified did not hold</Message> <RequestId>8DF400000163D3F2A89604C49ABEE55E</RequestId> <HostId>ha0ZGaSKVm+uLOrCXXtx4Qn1aLzvoeblctVXRAqA7pty10mzUUW/yOzFue04lBqu</HostId> <Condition>If-Match</Condition> </Error> |
Ejemplo de respuesta: Comprobación del valor ETag de un objeto (ETag coincidente)
Si el valor ETag del objeto es de 682e760adb130c60c120da3e333a8b09, la descarga se realiza correctamente.
1 2 3 4 5 6 7 8 9 10 11 12 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 5DEB00000164A21E1FC826C58F6BA001 Accept-Ranges: bytes ETag: "682e760adb130c60c120da3e333a8b09" Last-Modified: Mon, 16 Jul 2015 08:03:34 GMT Content-Type: application/octet-stream x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSbkdml1sLSvKnoHaRcOwRI+6+ustDwk Date: Mon, 16 Jul 2015 08:04:00 GMT Content-Length: 8 [ 8 Bytes object content] |
Ejemplo de solicitud: Descarga de un objeto usando una URL firmada
GET /object02?AccessKeyId=H4IPJX0TQTHTHEBQQCEC&Expires=1532688887&Signature=EQmDuOhaLUrzrzRNZxwS72CXeXM%3D HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: Fri, 27 Jul 2018 10:52:31 GMT
Ejemplo de respuesta: Descarga de un objeto mediante una dirección URL firmada
1 2 3 4 5 6 7 8 9 10 11 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 804F00000164DB5E5B7FB908D3BA8E00 ETag: "682e760adb130c60c120da3e333a8b09" Last-Modified: Mon, 16 Jul 2015 08:03:34 GMT Content-Type: application/octet-stream x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTlpxILjhVK/heKOWIP8Wn2IWmQoerfw Date: Fri, 27 Jul 2018 10:52:31 GMT Content-Length: 8 [ 8 Bytes object content] |
Ejemplo de solicitud: Descarga de un objeto y renombrarlo (con response-content-disposition usado)
Utilizar el parámetro response-content-disposition para descargar y cambiar el nombre de un objeto.
1 2 3 4 5 6 |
GET /object01?response-content-disposition=attachment; filename*=utf-8''name1 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:24:33 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s= |
Ejemplo de respuesta: Descarga de un objeto y renombrarlo (con response-content-disposition usado)
1 2 3 4 5 6 7 8 9 10 11 12 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 804F00000164DB5E5B7FB908D3BA8E00 ETag: "682e760adb130c60c120da3e333a8b09" Last-Modified: Mon, 16 Jul 2015 08:03:34 GMT Content-Type: application/octet-stream x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTlpxILjhVK/heKOWIP8Wn2IWmQoerfw Date: Fri, 27 Jul 2018 10:52:31 GMT Content-Length: 8 Content-Disposition: attachment; filename*=utf-8''name1 [ 8 Bytes object content] |
Ejemplo de solicitud: Descarga de un objeto y renombrarlo (con attname usado)
Utilizar el parámetro attname para descargar y cambiar el nombre de un objeto.
1 2 3 4 5 6 |
GET /object01?attname=name1 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:24:33 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s= |
Ejemplo de respuesta: Descarga de un objeto y renombrarlo (con attname usado)
1 2 3 4 5 6 7 8 9 10 11 12 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 804F00000164DB5E5B7FB908D3BA8E00 ETag: "682e760adb130c60c120da3e333a8b09" Last-Modified: Mon, 16 Jul 2015 08:03:34 GMT Content-Type: application/octet-stream x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTlpxILjhVK/heKOWIP8Wn2IWmQoerfw Date: Fri, 27 Jul 2018 10:52:31 GMT Content-Length: 8 Content-Disposition: attachment; filename*=utf-8''name1 [ 8 Bytes object content] |