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 2024-09-18 GMT+08:00

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.

Tabla 1 Parámetros de 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.

Tabla 2 Encabezados de solicitud

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.

Tabla 3 Encabezados de respuesta adicionales

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]