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

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 de OBS

Si el objeto que se va a descargar es un objeto Archive, restáurelo antes de descargarlo. La respuesta varía con el estado de recuperación del objeto. Si el objeto se ha restaurado, se devuelve el encabezado x-obs-restore indicando la fecha de caducidad del objeto cuando se descarga correctamente. Si solicita la descarga de objetos Archive que no están restaurados o que están siendo restaurados, se devuelve un error 403 Forbidden.

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 más detalles, consulte 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 chinos, 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 sólo 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: 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: 0f64741bf7cb1089e988e4585d0d3434)

No

x-obs-server-side-encryption-customer-algorithm

Indica un 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.

Si selecciona No, este encabezado es necesario cuando se utiliza 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 descifrar 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.

Si cualquier proceso es anormal: Este encabezado es necesario cuando se utiliza 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.

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, también se pueden usar los siguientes encabezados de mensaje. Para más detalles, consulte Tabla 3.

Tabla 3 Parámetros de cabecera 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 sólo 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 endpoint 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

Valores válidos: true o 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

No hay ningún valor predeterminado.

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

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.

Solicitud de muestra 1

Descargar todo el 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=

Respuesta de muestra 1

 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]

Solicitud de muestra 2

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=

Respuesta de muestra 2

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: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSn2JHu4okx9NBRNZAvBGaws3lt3g31g
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

Solicitud de muestra 3

Descargar 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 muestra 3

 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]

Solicitud de muestra 4

Descargar un objeto si su valor 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=

Respuesta de muestra 4-1 (etiqueta no coincidente)

Si el valor Etag del objeto almacenado no es 682e760adb130c60c120da3e333a8b09, el sistema muestra un mensaje que indica que la descarga falla.

 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>Hw0ZGaSKVm+uLOrCXXtx4Qn1aLzvoeblctVXRAqA7pty10mzUUW/yOzFue04lBqu</HostId>
  <Condition>If-Match</Condition>
</Error>

Respuesta de muestra 4-2 (descarga exitosa)

Si el valor Etag del objeto almacenado es 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]

Solicitud de muestra 5

Llevar la firma en la URL cuando descargue un objeto.

GET /object02?AccessKeyId=H4IPJX0TQTHTHEBQQCEC&Expires=1532688887&Signature=EQmDuOhWLUrzrzRNZxwS72CXeXM%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

Respuesta de muestra 5

 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]

Solicitud de muestra 6

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=

Respuesta de muestra 6

 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]

Solicitud de muestra 7

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=

Respuesta de muestra 7

 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]