Copiar un objeto

Para copiar un objeto, debes realizar una solicitud PUT con un alcance para el depósito nuevo y el nombre del objeto, y especificar el objeto de origen con el encabezado de la solicitud x-goog-copy-source. Para copiar un objeto, debes usar el encabezado x-goog-metadata-directive con un valor de REPLACE y especificar los metadatos del objeto del objeto copiado en tu solicitud. las rutas "a GCP".

Si los depósitos de origen y destino tienen ubicaciones diferentes, la solicitud de copia genera cargos de uso de red.

Si alguno de los encabezados de copia condicional no coincide con la condición que especificas, recibirás un código de estado 412 Precondition Failed y el cuerpo de la respuesta de error tendrá PreconditionFailed en el elemento Code.

Parámetros de string de consulta

Esta solicitud no suele incluir parámetros de cadena de consulta.

Consulta los parámetros de string de consulta de URL firmados para obtener información sobre los parámetros que incluyes cuando creas y usas URL firmadas.

Solicita encabezados

Además de los encabezados de solicitud comunes, se puede usar lo siguiente.

Header Descripción Obligatorio
Content-Encoding El algoritmo de compresión que se usó para comprimir el objeto que deseas subir. No
Content-Disposition Un encabezado que puedes configurar en un objeto que especifica información de presentación sobre cómo se deben transmitir los datos del objeto. No
x-goog-acl La LCA predefinida que deseas aplicar al objeto. No lo uses si usas el parámetro de string de consulta acl para aplicar las LCA. No
x-goog-custom-time Una fecha y hora especificadas por el usuario. No
x-goog-metadata-directive Las instrucciones para controlar los metadatos durante una operación de copia. Puede ser COPY o REPLACE. El valor predeterminado es COPY. No
x-goog-meta- Un encabezado de extensión que se puede usar para almacenar metadatos adicionales que no son proporcionados por los otros campos. No
x-goog-copy-source Es la ruta de acceso del depósito o del objeto que deseas copiar. Por ejemplo, /travel-maps/paris.jpg.
x-goog-copy-source-generation El número de generación del objeto que deseas copiar. No
x-goog-copy-source-if-match Una ETag. Si el ETag que especificas coincide con el ETag del objeto de origen, se copia el objeto de origen. No
x-goog-copy-source-if-none-match Una ETag. Si el ETag que especificas no coincide con la Etag del objeto de origen, el objeto se copia. No
x-goog-copy-source-if-modified-since Una fecha y hora. Si la fecha y hora que especificas son anteriores a la fecha Last-Modified del objeto de origen, el objeto se copia. No
x-goog-copy-source-if-unmodified-since Una fecha y hora. Si la fecha y hora que especificas son posteriores a la fecha Last-Modified del objeto de origen, el objeto se copia. No
x-goog-encryption-kms-key-name La clave de encriptación administrada por el cliente que se usa para encriptar el objeto copiado. No

Para copiar un objeto encriptado por una clave de encriptación proporcionada por el cliente, usa los encabezados enumerados en la página de encriptación en tu solicitud.

Elementos de cuerpo de la solicitud

Esta solicitud no incluye un documento XML en el cuerpo de la solicitud.

Sintaxis de la solicitud

La siguiente sintaxis se aplica a las solicitudes de objetos PUT que usan el encabezado de solicitud x-goog- copy-source y los encabezados de solicitud de copia condicional relacionados.

PUT /OBJECT_NAME HTTP/1.1
Host: BUCKET_NAME.storage.googleapis.com
Date: DATE
Content-Length: REQUEST_BODY_LENGTH
Content-Type: MIME_TYPE
Authorization: AUTHENTICATION_STRING
x-goog-copy-source: /BUCKET_NAME/OBJECT_NAME
x-goog-copy-source-if-match: ETAG
x-goog-copy-source-if-none-match: ETAG
x-goog-copy-source-if-unmodified-since: DATE
x-goog-copy-source-if-modified-since: DATE
x-goog-metadata-directive: COPY | REPLACE

Encabezados de respuesta

La solicitud puede mostrar una variedad de encabezados de respuesta según los encabezados de la solicitud que uses.

Elementos del cuerpo de la respuesta

Los elementos de respuesta siguientes se muestran cuando usas el encabezado de la solicitud x-goog-copy- source o alguno de los encabezados de solicitud de copia condicional relacionados.

Elemento Descripción
CopyObjectResult Contenedor para información de copia.
ETag La ETag del objeto recién copiado.
Lastltima modificación La fecha y la hora de la última modificación del objeto de origen antes de la operación de copia actual.

Ejemplo

En el siguiente ejemplo, se usa el encabezado de la solicitud x-goog-copy-source para copiar un objeto llamado paris.jpg de un depósito llamado travel-maps a un depósito llamado city-maps.

Solicitud

PUT /paris.jpg HTTP/1.1
Host: city-maps.storage.googleapis.com
Date: Fri, 23 Jul 2010 21:27:36 GMT
Content-Length: 0
x-goog-copy-source: travel-maps/paris.jpg
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

Respuesta

HTTP/1.1 200 OK
ETag: "9930c6204b2f14e1a4496569dc200186"
Date: Fri, 23 Jul 2010 21:27:37 GMT
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Content-Length: 175
Content-Type: text/html

<?xml version='1.0' encoding='UTF-8'?>
<CopyObjectResult>
  <LastModified>2010-06-17T16:18:08.291Z</LastModified>
  <ETag>"9930c6204b2f14e1a4496569dc200186"</ETag>
</CopyObjectResult>