La API de Google Drive te permite subir datos de archivos cuando creas o actualizas una
File
Para obtener información sobre cómo crear una
archivo solo de metadatos, como una carpeta, consulta Crea archivos solo de metadatos.
Existen tres tipos de cargas que puedes realizar:
Carga simple (
uploadType=media
): Usa este tipo de carga para transferir un Un archivo multimedia pequeño (de 5 MB o menos) sin proporcionar metadatos. Para realizar un carga simple, consulta Cómo realizar una carga simple.Carga multiparte (
uploadType=multipart
): Usa este tipo de carga para transfiera un archivo pequeño (de 5 MB o menos) junto con metadatos que describan en una sola solicitud. Para realizar una carga multiparte, consulta Cómo realizar una carga multiparte.Carga reanudable (
uploadType=resumable
): Usa este tipo de carga para archivos grandes (de más de 5 MB) y cuando exista una alta probabilidad de que la red interrupción, como cuando se crea un archivo desde una aplicación móvil. Reanudable cargas son una buena opción para la mayoría de las aplicaciones porque también funcionan para archivos pequeños con un costo mínimo de una solicitud HTTP adicional por carga. Para realizar una carga reanudable, consulta Realiza una carga reanudable carga.
Las bibliotecas cliente de la API de Google implementan al menos uno de estos tipos de cargas. Consulta la biblioteca cliente documentación para obtener detalles adicionales sobre cada uno de los tipos.
Usa PATCH
en comparación con PUT
A modo de repaso, el verbo HTTP PATCH
admite una actualización parcial de recursos de archivos.
mientras que el verbo HTTP PUT
admite el reemplazo completo de recursos. Ten en cuenta que PUT
puede introducir cambios rotundos cuando se agrega un campo nuevo a un recurso existente.
Cuando subas un recurso de archivo, sigue estos lineamientos:
- Usa el verbo HTTP documentado en la referencia de la API para la solicitud inicial de para una carga reanudable o para la única solicitud de una carga simple o multiparte.
- Usa
PUT
para todas las solicitudes posteriores de una carga reanudable una vez que comenzó la solicitud. Estas solicitudes suben contenido independientemente de la método de pago.
Realiza una carga simple
Para realizar una carga simple, usa el
Método files.create
con
uploadType=media
A continuación, se muestra cómo realizar una carga simple:
HTTP
Crea una solicitud
POST
al URI del método /upload con la consulta. parámetro deuploadType=media
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=media
Agrega los datos del archivo al cuerpo de la solicitud.
Agrega estos encabezados HTTP:
Content-Type
Se establece en el tipo de medio MIME del objeto que se está recibiendo. cargado.Content-Length
Se establece en la cantidad de bytes que subes. Si usas o fragmentada, este encabezado no es obligatorio.
Envía la solicitud. Si la solicitud se realiza correctamente, el servidor muestra el código de estado
HTTP 200 OK
junto con los metadatos del archivo. {HTTP}
Cuando subes un archivo, se crean metadatos básicos y algunos atributos
se infieren del archivo, como el tipo de MIME o modifiedTime
. Puedes usar
una simple carga en los casos en que hay archivos pequeños y metadatos
importante.
Cómo realizar una carga multiparte
Una solicitud de carga multiparte te permite subir metadatos y datos en el mismo para cada solicitud. Usa esta opción si los datos que envías son lo suficientemente pequeños como para volver a subirlos en su totalidad, si la conexión falla.
Para realizar una carga multiparte, usa el
Método files.create
con
uploadType=multipart
A continuación, se muestra cómo realizar una carga multiparte:
Java
Python
Node.js
PHP
.NET
HTTP
Crea una solicitud
POST
al URI del método /upload con la consulta. parámetro deuploadType=multipart
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart
Crea el cuerpo de la solicitud. Dale formato al cuerpo según el tipo de contenido multiparte/relacionado con RFC 2387. que consta de dos partes:
- Metadatos. Los metadatos deben ir primero y tener un
Content-Type
Se estableció el encabezado enapplication/json;
charset=UTF-8
. Agrega los metadatos del archivo en formato JSON. - Contenido multimedia. El contenido multimedia debe ir en segundo lugar y debe tener un encabezado
Content-Type
de cualquier tipo de MIME. Agrega los datos del archivo a la parte multimedia.
Identifica cada parte con una string de límite, precedida por dos guiones. En agrega dos guiones después de la última cadena de límite.
- Metadatos. Los metadatos deben ir primero y tener un
Agrega estos encabezados HTTP de nivel superior:
Content-Type
Se establece enmultipart/related
y, además, incluye el límite. la cadena que usas para identificar las distintas partes de la solicitud. Para ejemplo:Content-Type: multipart/related; boundary=foo_bar_baz
Content-Length
. Configurado como la cantidad total de bytes en el cuerpo de la solicitud.
Envía la solicitud.
Para crear o actualizar solo la parte de metadatos, sin los datos asociados, haz lo siguiente:
envía una solicitud POST
o PATCH
al extremo de recurso estándar:
https://www.googleapis.com/drive/v3/files
Si la solicitud se realiza correctamente,
el servidor devuelve el código de estado HTTP 200 OK
junto con el nombre
metadatos.
Cuando se crean archivos, deben especificar una extensión de archivo en el name
del archivo.
. Por ejemplo, al crear un archivo de foto JPEG, puedes especificar algo
como "name": "photo.jpg"
en los metadatos. Las llamadas posteriores a files.get
muestran la propiedad fileExtension
de solo lectura.
que contiene la extensión que se especificó originalmente en el campo name
.
Realiza una carga reanudable
Una carga reanudable te permite reanudar una operación de carga después de una comunicación. una falla interrumpe el flujo de datos. Debido a que no es necesario que reinicies cargas de archivos desde el principio, las cargas reanudables también pueden reducir tu ancho de banda si hay una falla en la red.
Las cargas reanudables son útiles cuando el tamaño de tus archivos puede variar mucho o cuando hay un límite de tiempo fijo para las solicitudes (como las tareas en segundo plano del SO móvil y determinadas solicitudes de App Engine). También puedes usar cargas reanudables para situaciones en las que quieres mostrar una barra de progreso de carga.
Una carga reanudable consta de varios pasos de alto nivel:
- Envía la solicitud inicial y recupera el URI de la sesión reanudable.
- Sube los datos y supervisa el estado de carga.
- (Opcional) Si la carga se interrumpe, reanúdala.
Envía la solicitud inicial
Para iniciar una carga reanudable, usa el
Método files.create
con
uploadType=resumable
HTTP
Crea una solicitud
POST
para el URI del método /upload con la consulta. parámetro deuploadType=resumable
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable
Si la solicitud de inicio se realiza correctamente, la respuesta incluye una
200 OK
. el código de estado HTTP. Además, incluye un encabezadoLocation
que especifica el URI de la sesión reanudable:HTTP/1.1 200 OK Location: https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable&upload_id=xa298sd_sdlkj2 Content-Length: 0
Guarda el URI de la sesión reanudable para poder subir los datos del archivo y realizar consultas el estado de la carga. El URI de la sesión reanudable vence después de una semana.
Si tienes metadatos para el archivo, agrégalos al cuerpo de la solicitud. en formato JSON. De lo contrario, deja el cuerpo de la solicitud vacío.
Agrega estos encabezados HTTP:
X-Upload-Content-Type
. Es opcional. Se establece en el tipo de MIME de los datos del archivo, que se transfieren en solicitudes posteriores. Si el tipo de MIME de los datos no se especifica en los metadatos ni a través de este encabezado, el objeto se entrega comoapplication/octet-stream.
.X-Upload-Content-Length
. Es opcional. Se establece en la cantidad de bytes de que se transfieren en solicitudes posteriores.Content-Type
. Es obligatorio si existen metadatos para el archivo. Establecer enapplication/json;
(charset=UTF-8
).Content-Length
Es obligatorio, a menos que uses la codificación de transferencia fragmentada. Se establece como la cantidad de bytes en el cuerpo de esta solicitud inicial.
Envía la solicitud. Si la solicitud de inicio de sesión tiene éxito, la incluye un código de estado
200 OK HTTP
. Además, la respuesta incluye un encabezadoLocation
que especifica el URI de la sesión reanudable. Utiliza el URI de la sesión reanudable para subir los datos del archivo y consultar estado de carga. El URI de la sesión reanudable vence después de una semana.Copia y guarda la URL de la sesión reanudable.
Continúa con el paso Sube el contenido.
Sube el contenido
Existen dos formas de subir un archivo con una sesión reanudable:
- Sube contenido en una sola solicitud: Usa este enfoque cuando el archivo pueda se pueden subir en una solicitud, si no hay un límite de tiempo fijo para solicitud o no necesitas mostrar un indicador de progreso de carga. Esta es mejor porque requiere menos solicitudes y da como resultado una mejor rendimiento.
Sube el contenido en varios fragmentos: Usa este enfoque si debes reducir la cantidad de datos transferidos en una sola solicitud. Es posible que necesites para reducir los datos transferidos cuando hay un límite de tiempo fijo para las individuales, como puede ser el caso de ciertas clases de solicitudes de App Engine. Este enfoque también es útil si debes proporcionar un indicador personalizado para para ver el progreso de la carga.
HTTP: solicitud única
- Crea una solicitud
PUT
para el URI de la sesión reanudable. - Agrega los datos del archivo al cuerpo de la solicitud.
- Agrega un encabezado HTTP Content-Length, establecido en la cantidad de bytes del archivo.
- Envía la solicitud. Si se interrumpe la solicitud de carga o si recibes un
5xx
, sigue el procedimiento que se describe en Cómo reanudar una carga interrumpida.
HTTP: Solicitudes múltiples
Crea una solicitud
PUT
para el URI de la sesión reanudable.Agrega los datos del fragmento al cuerpo de la solicitud. Crear fragmentos en múltiplos de 256 KB (256 x 1024 bytes) de tamaño, excepto por el último fragmento que completa la carga. El tamaño del fragmento debe ser lo más grande posible para que la carga eficiente.
Agrega estos encabezados HTTP:
Content-Length
. Se establece en la cantidad de bytes del fragmento actual.Content-Range
Se configura para que muestre qué bytes del archivo subes. Para Por ejemplo,Content-Range: bytes 0-524287/2000000
muestra que subes el archivo primeros 524,288 bytes (256 x 1024 x 2) en un archivo de 2,000,000 bytes.
Envía la solicitud y procesa la respuesta. Si la solicitud de carga es interrumpida, o si recibes una respuesta
5xx
, sigue el procedimiento de Reanuda una carga interrumpida.Repite los pasos del 1 al 4 para cada fragmento que quede en el archivo. Usa el
Range
en la respuesta para determinar dónde comenzar el siguiente fragmento. No asumas que el servidor recibió todos los bytes enviados en la solicitud anterior.
Cuando se complete la carga del archivo, recibirás un 200 OK
o
La respuesta de 201 Created
, junto con todos los metadatos asociados con el recurso.
Reanuda una carga interrumpida
Si una solicitud de carga se interrumpe antes de una respuesta, o si recibes una respuesta 503
Service Unavailable
, debes reanudar la carga interrumpida.
HTTP
Crea una solicitud
PUT
vacía para el URI de sesión reanudable a fin de solicitar el estado de la carga.Agrega un encabezado
Content-Range
para indicar que la posición actual en el se desconoce. Por ejemplo, estableceContent-Range
en*/2000000
si tu la longitud total del archivo es de 2,000,000 bytes. Si desconoces el tamaño completo estableceContent-Range
en*/*
.Envía la solicitud.
Procesa la respuesta:
- Una respuesta
200 OK
o201 Created
indica que se completó la carga y que no es necesario realizar ninguna otra acción. - Una respuesta
308 Resume Incomplete
indica que debes continuar para subir el archivo. - Una respuesta
404 Not Found
indica que la sesión de carga venció y la carga debe reiniciarse desde el principio.
- Una respuesta
Si recibiste una respuesta
308 Resume Incomplete
, procesa el EncabezadoRange
de la respuesta para determinar qué bytes recibió el servidor. Si el botón no tiene un encabezadoRange
, no se recibieron bytes. Por ejemplo, un encabezadoRange
debytes=0-42
indica que el primer se recibieron 43 bytes del archivo y que el siguiente fragmento que comenzaría con el byte 44.Ahora que sabes dónde reanudar la carga, sube el archivo. comenzando con el siguiente byte. Incluye un
Content-Range
para indicar qué parte del archivo envías. Para Por ejemplo,Content-Range: bytes 43-1999999
indica que enviar bytes 44 a 2,000,000.
Cómo solucionar errores de carga de contenido multimedia
Cuando subas contenido multimedia, sigue estas prácticas recomendadas para solucionar errores:
- En el caso de los errores
5xx
, reanuda o reintenta las cargas que no se hayan realizado de forma correcta debido a la conexión interrupciones. Para obtener más información sobre cómo manejar los errores5xx
, consulta Errores 500, 502, 503 y 504. - Para los errores
403 rate limit
, vuelve a intentar la carga. Para obtener más información manejar errores403 rate limit
, consulta error 403:rateLimitExceeded
- Si hay algún error
4xx
(incluido403
) durante una carga reanudable, reinicia la carga. Estos errores indican que la sesión de carga venció y debe reiniciada mediante la solicitud de un nuevo URI de sesión. Subir sesiones también vencen después de una semana de inactividad.
Importar a tipos de Documentos de Google
Cuando crees un archivo en Drive, quizás quieras convertir a un tipo de archivo de Google Workspace, como Documentos de Google o Hojas de cálculo. Por ejemplo, quizás quieres transformar un documento de tu procesador de texto favorito en un documento de Documentos para aprovechar atributos.
Para convertir un archivo a un tipo de archivo específico de Google Workspace, especifica la
Google Workspace mimeType
durante la creación del archivo.
A continuación, se muestra cómo convertir un archivo CSV en una hoja de Google Workspace:
Java
Python
Node.js
PHP
.NET
Para ver si hay una conversión disponible, verifica el array importFormats
del recurso about
antes de crear el archivo.
Las conversiones admitidas están disponibles de forma dinámica en este array. Algunos ejemplos
los siguientes son los formatos de importación:
De | Para |
---|---|
Microsoft Word, texto de OpenDocument, HTML, RTF, texto sin formato | Documentos de Google |
Microsoft Excel, OpenDocument Spreadsheet, CSV, TSV, texto sin formato | Hojas de cálculo de Google |
Microsoft PowerPoint, OpenDocument Presentation | Presentaciones de Google |
JPEG, PNG, GIF, BMP y PDF | Documentos de Google (incorpora la imagen en un documento) |
Texto sin formato (tipo MIME especial), JSON | Google Apps Script |
Cuando subes y conviertes contenido multimedia durante una solicitud update
en una
de Documentos, Hojas de cálculo o Presentaciones, la
se reemplaza todo el contenido del documento.
Cuando conviertes una imagen en un archivo de Documentos, Drive usa
Reconocimiento óptico de caracteres (OCR) para convertir la imagen en texto. Puedes
mejorar la calidad del algoritmo de OCR especificando el BCP aplicable
Código de idioma 47
en la
ocrLanguage
parámetro. El texto extraído aparece en el Documento junto a la imagen incorporada.
Usa un ID generado previamente para subir archivos
La API de Drive te permite recuperar una lista de IDs de archivos generados previamente que
se usan para subir y crear recursos. Las solicitudes de carga y creación de archivos pueden
estos IDs pregenerados. Establece el campo id
en los metadatos del archivo.
Para crear IDs pregenerados, llama a
files.generateIds
con el
la cantidad de IDs que se crearán.
Puedes volver a intentar cargas de forma segura con IDs pregenerados si hay un problema
tiempo de espera o error del servidor. Si el archivo se creó correctamente, las siguientes
los reintentos muestran un error HTTP 409
y no crean archivos duplicados.
Define texto indexable para tipos de archivos desconocidos
Los usuarios pueden usar la IU de Drive para encontrar contenido de documentos. También puedes
usa files.list
y fullText
para buscar contenido en tu app. Para obtener más información, consulta Buscar
archivos y carpetas.
Drive indexa automáticamente los documentos para la búsqueda cuando
reconoce el tipo de archivo, incluidos los documentos de texto, los PDF, las imágenes con texto y
y otros tipos comunes. Si tu app guarda otros tipos de archivos (como dibujos,
videos y accesos directos), puedes mejorar la visibilidad si proporcionas
texto indexable en el campo contentHints.indexableText
del archivo.
Para obtener más información sobre el texto indexable, consulta Administra archivos metadatos.