A API Google Drive permite que você faça o upload de dados de arquivos ao criar ou atualizar um
File
Para mais informações sobre como criar um
arquivo somente de metadados, como uma pasta, consulte Criar arquivos somente de metadados.
Há três tipos de uploads que você pode realizar:
Upload simples (
uploadType=media
): use esse tipo de upload para transferir um arquivo de mídia pequeno (5 MB ou menos) sem fornecer metadados. Para realizar uma consulte Fazer um upload simples.Upload de várias partes (
uploadType=multipart
): "Use este tipo de upload para transferir um arquivo pequeno (5 MB ou menos), junto com os metadados que descrevem o em um único arquivo. Para realizar um upload de várias partes, consulte Executar um upload de várias partes.Upload retomável (
uploadType=resumable
): use esse tipo de upload para arquivos grandes (maiores do que 5 MB) e quando há uma grande chance de acesso interrupção, como ao criar um arquivo de um app para dispositivos móveis. Recuperável os uploads também são uma boa opção para a maioria dos aplicativos, porque também funcionam para arquivos pequenos a um custo mínimo de uma solicitação HTTP adicional por upload. Para executar um upload retomável, consulte Executar um upload retomável upload.
As bibliotecas de clientes da API do Google implementam pelo menos um desses tipos de de conteúdo. Consulte a biblioteca de cliente documentação para mais detalhes sobre como usar cada um dos tipos.
Usar PATCH
x PUT
Para relembrar, o verbo HTTP PATCH
oferece suporte a uma atualização de recurso de arquivo parcial
e o verbo HTTP PUT
oferece suporte à substituição completa de recursos. Observe que PUT
pode introduzir alterações interruptivas ao adicionar um novo campo a um recurso existente.
Ao fazer upload de um recurso de arquivo, siga estas diretrizes:
- Use o verbo HTTP documentado na referência da API para a solicitação inicial de um upload retomável ou para a única solicitação de um upload simples ou de várias partes.
- Use
PUT
para todas as solicitações subsequentes para um upload retomável assim que o solicitação tenha sido iniciada. Essas solicitações estão fazendo upload de conteúdo, que está sendo chamado.
Fazer um upload simples
Para fazer um upload simples, use o
método files.create
com
uploadType=media
.
Confira abaixo como fazer um upload simples:
HTTP
Criar uma solicitação
POST
para o URI /upload do método com a consulta deuploadType=media
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=media
Adicione os dados do arquivo ao corpo da solicitação.
Adicione estes cabeçalhos HTTP:
Content-Type
: Defina conforme o tipo de mídia MIME do objeto que está sendo enviado.Content-Length
: Defina conforme o número de bytes do upload. Se você usar codificação de transferência em partes, esse cabeçalho não é obrigatório.
Envie a solicitação. Se a solicitação for bem-sucedida, o servidor retornará o código de status
HTTP 200 OK
com os metadados do arquivo. {HTTP}
Quando você faz um upload simples, metadados básicos são criados e alguns atributos
são inferidos do arquivo, como o tipo MIME ou modifiedTime
. Você pode usar
um upload simples nos casos em que você tem arquivos pequenos e os metadados de arquivos
muito importante.
Fazer um upload de várias partes
Uma solicitação de upload em várias partes permite enviar metadados e dados no mesmo solicitação. Use essa opção se os dados enviados forem pequenos o suficiente para serem enviados novamente. completamente, se a conexão falhar.
Para realizar um upload de várias partes, use o
método files.create
com
uploadType=multipart
.
Confira abaixo como fazer upload de várias partes:
Java
Python
Node.js
PHP
.NET
HTTP
Criar uma solicitação
POST
para o URI /upload do método com a consulta deuploadType=multipart
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart
Crie o corpo da solicitação. Formate o corpo de acordo com o tipo de conteúdo relacionado/várias partes RFC 2387, que contém duas partes:
- Metadados. Os metadados precisam vir primeiro e ter um
Content-Type
. definido comoapplication/json;
charset=UTF-8
. Adicionar os metadados do arquivo no formato JSON. - Mídia. A mídia precisa vir depois e ter um cabeçalho
Content-Type
. de qualquer tipo MIME. Adicione os dados do arquivo à parte de mídia.
Identifique cada parte com uma string limite, precedida por dois hifens. Em Além disso, adicione dois hifens após a última string de limite.
- Metadados. Os metadados precisam vir primeiro e ter um
Adicione estes cabeçalhos HTTP de nível superior:
Content-Type
: Defina comomultipart/related
e inclua o limite usada para identificar as diferentes partes da solicitação. Para exemplo:Content-Type: multipart/related; boundary=foo_bar_baz
Content-Length
. Defina com o número total de bytes no corpo da solicitação.
Envie a solicitação.
Para criar ou atualizar somente a parte dos metadados, sem os dados associados,
envie uma solicitação POST
ou PATCH
para o endpoint de recurso padrão:
https://www.googleapis.com/drive/v3/files
Se a solicitação for bem-sucedida,
o servidor retorna o código de status HTTP 200 OK
junto com a string
metadados.
Ao criar os arquivos, eles precisam especificar uma extensão no name
. Por exemplo, ao criar um arquivo JPEG de foto, você pode especificar algo
como "name": "photo.jpg"
nos metadados. Chamadas subsequentes para files.get
retornam a propriedade fileExtension
somente leitura
que contém a extensão especificada originalmente no campo name
.
Executar um upload retomável
Um upload retomável permite retomar uma operação de upload após uma comunicação uma falha interrompe o fluxo de dados. Como não é preciso reiniciar grandes desde o início, os uploads retomáveis também podem reduzir sua largura de banda em caso de falha na rede.
Os uploads retomáveis são úteis quando os tamanhos dos arquivos podem variar muito ou quando há um limite de tempo fixo para solicitações (como tarefas em segundo plano de sistemas operacionais móveis e determinadas solicitações do App Engine). Também é possível usar uploads retomáveis para situações em que você quer mostrar uma barra de progresso de upload.
Um upload retomável consiste em várias etapas de alto nível:
- Envie a solicitação inicial e recupere o URI da sessão retomável.
- Fazer upload dos dados e monitorar o estado do upload.
- (Opcional) Se houver problemas, retome o upload.
Enviar a solicitação inicial
Para iniciar um upload retomável, use o
método files.create
com
uploadType=resumable
.
HTTP
Criar uma solicitação
POST
para o URI /upload do método com a consulta deuploadType=resumable
:POST https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable
Se a solicitação de início for bem-sucedida, a resposta incluirá um
200 OK
Código de status HTTP. Além disso, ele inclui um cabeçalhoLocation
que especifica o URI da sessão retomável:HTTP/1.1 200 OK Location: https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable&upload_id=xa298sd_sdlkj2 Content-Length: 0
Salvar o URI da sessão retomável para fazer upload dos dados do arquivo e da consulta o status do upload. Um URI de sessão retomável expira após uma semana.
Se você tiver metadados do arquivo, adicione-os ao corpo da solicitação no formato JSON. Caso contrário, deixe o corpo em branco.
Adicione estes cabeçalhos HTTP:
X-Upload-Content-Type
: opcional. Defina como o tipo MIME dos dados de arquivo, que serão transferido nas solicitações subsequentes. Se o tipo MIME dos dados não é especificado nos metadados ou por esse cabeçalho, o objeto é veiculado comoapplication/octet-stream.
X-Upload-Content-Length
: opcional. Defina como o número de bytes de que serão transferidos em solicitações subsequentes.Content-Type
: obrigatório se você tiver os metadados do arquivo. Definir comoapplication/json;
:charset=UTF-8
.Content-Length
: Obrigatório, a menos que você use a codificação de transferência em partes. Defina conforme o número de bytes no corpo dessa solicitação inicial.
Envie a solicitação. Se a solicitação de início da sessão for bem-sucedida, o A resposta inclui um código de status
200 OK HTTP
. Além disso, a resposta inclui um cabeçalhoLocation
que especifica o URI da sessão retomável. Use o URI da sessão retomável para fazer upload dos dados do arquivo e consultar o status de envio. Um URI de sessão retomável expira após uma semana.Copie e salve o URL da sessão retomável.
Prossiga para Fazer upload do conteúdo.
Fazer upload do conteúdo
Há duas formas de fazer o upload de um arquivo com uma sessão retomável:
- Enviar conteúdo com uma única solicitação: use essa abordagem quando o arquivo puder em uma única solicitação, se não houver um limite de tempo fixo ou não exibir um indicador do progresso do upload. Isso é a melhor abordagem porque requer menos solicitações e resulta em melhores desempenho.
Faça upload do conteúdo em várias partes: use essa abordagem se precisar para reduzir a quantidade de dados transferidos em uma solicitação única. Talvez seja necessário para reduzir a transferência de dados quando há um limite de tempo fixo por usuário solicitações, como pode acontecer com certas classes de solicitações do App Engine. Essa abordagem também é útil se você precisar fornecer um indicador personalizado para mostrar o progresso do upload.
HTTP - solicitação única
- Crie uma solicitação
PUT
para o URI da sessão retomável. - Adicione os dados do arquivo ao corpo da solicitação.
- Adicione um cabeçalho HTTP Content-Length definido como o número de bytes no arquivo.
- Envie a solicitação. Se a solicitação de upload for interrompida ou se você receber uma
5xx
, siga o procedimento em Retomar um upload interrompido.
HTTP - várias solicitações
Crie uma solicitação
PUT
para o URI da sessão retomável.Adicione os dados de cada parte ao corpo da solicitação. Criar pedaços em múltiplos 256 KB (256 x 1.024 bytes), exceto a parte final que completa durante o upload. Mantenha o tamanho do bloco o maior possível para que o upload seja eficiente.
Adicione estes cabeçalhos HTTP:
Content-Length
: defina como o número de bytes na parte atual.Content-Range
: Defina para mostrar quais bytes no arquivo você enviou. Para exemplo,Content-Range: bytes 0-524287/2000000
mostra que você faz o upload primeiros 524.288 bytes (256 x 1024 x 2) em um arquivo de 2 milhões de bytes.
Envie a solicitação e processe a resposta. Se a solicitação de upload for interrompido ou se você receber uma resposta
5xx
, siga o procedimento em Retomar um upload interrompido.Repita as etapas de 1 a 4 para cada fragmento que permanece no arquivo. Use o
Range
na resposta para determinar onde iniciar a próxima parte. Não suponha que o servidor recebeu todos os bytes enviados na solicitação anterior.
Quando o upload do arquivo inteiro estiver concluído, você receberá um 200 OK
ou
201 Created
, com todos os metadados associados ao recurso.
Retomar um upload interrompido
Se uma solicitação de upload for encerrada antes de uma resposta ou você receber uma resposta 503
Service Unavailable
, será necessário retomar o upload interrompido.
HTTP
Para saber o status do upload, crie uma solicitação
PUT
vazia para o URI de sessão retomável.Adicione um cabeçalho
Content-Range
para indicar que a posição atual na arquivo é desconhecido. Por exemplo, definaContent-Range
como*/2000000
se o o comprimento total do arquivo é de 2.000.000 bytes. Se você não souber o tamanho total defina oContent-Range
como*/*
.Envie a solicitação.
Processe a resposta:
- Uma resposta
200 OK
ou201 Created
indica que o upload foi concluído e não é necessário realizar qualquer outra ação. - Uma resposta
308 Resume Incomplete
indica que você precisa continuar para fazer upload do arquivo. - Uma resposta
404 Not Found
indica que a sessão de upload expirou e o upload precisa ser reiniciado desde o início.
- Uma resposta
Se você recebeu uma resposta
308 Resume Incomplete
, processe oRange
da resposta para determinar quais bytes o servidor recebeu. Se o resposta não tem um cabeçalhoRange
, nenhum byte foi recebido. Por exemplo, um cabeçalhoRange
debytes=0-42
indica que o primeiro 43 bytes do arquivo foram recebidos e a próxima parte a ser carregada começa com o byte 44.Agora que você sabe por onde retomar o upload, continue com o upload do arquivo começando pelo byte seguinte. Inclua um
Content-Range
para indicar qual parte do arquivo você envia. Para exemplo,Content-Range: bytes 43-1999999
indica que você enviar bytes 44 a 2.000.000.
Processar erros de upload de mídia
Ao fazer upload de mídia, siga estas práticas recomendadas para lidar com erros:
- Para
5xx
erros, retome ou repita os uploads que falharem devido à conexão interrupções. Para mais informações sobre como lidar com erros5xx
, consulte Erros 500, 502, 503, 504. - Para erros
403 rate limit
, tente fazer o upload novamente. Para mais informações sobre como lidar com erros403 rate limit
, consulte o erro 403:rateLimitExceeded
. - Para erros
4xx
(incluindo403
) durante um upload retomável, reinicie durante o upload. Esses erros indicam que a sessão de upload expirou e precisa ser reiniciada solicitando um novo URI de sessão. Fazer upload de sessões também expira após uma semana de inatividade.
Importar para os tipos do Documentos Google
Quando você cria um arquivo no Drive, talvez queira converter o em um tipo de arquivo do Google Workspace, como Documentos Google ou Planilhas. Por exemplo, talvez você queira transformar um documento de seu processador de texto favorito em um app Documentos atributos de machine learning.
Para converter um arquivo em um tipo de arquivo específico do Google Workspace, especifique o
mimeType
do Google Workspace ao criar o arquivo.
Confira a seguir como converter um arquivo CSV em uma planilha do Google Workspace:
Java
Python
Node.js
PHP
.NET
Para saber se uma conversão está disponível, verifique a matriz importFormats
do recurso about
antes de criar o arquivo.
As conversões compatíveis são disponibilizadas dinamicamente nessa matriz. Alguns tipos
formatos de importação são:
De | Para |
---|---|
Microsoft Word, OpenDocument Text, HTML, RTF, texto simples | Documentos Google |
Microsoft Excel, planilha OpenDocument, CSV, TSV, texto simples | Planilhas Google |
Microsoft PowerPoint, apresentação OpenDocument | Apresentações Google |
JPEG, PNG, GIF, BMP e PDF | Documentos Google (incorpora a imagem em um documento) |
Texto simples (tipo MIME especial), JSON | Google Apps Script |
Quando você faz upload e converte mídia durante uma solicitação update
para um
dos apps Documentos, Planilhas ou Apresentações, a
todo o conteúdo do documento é substituído.
Quando você converte uma imagem em um arquivo dos Documentos, o Drive usa
O reconhecimento óptico de caracteres (OCR) converte a imagem em texto. Você pode
melhorar a qualidade do algoritmo de OCR especificando o BCP aplicável
47 código de idioma
no
ocrLanguage
. O texto extraído aparece no documento ao lado da imagem incorporada.
Usar um ID pré-gerado para fazer upload de arquivos
A API Drive permite recuperar uma lista de IDs de arquivos pré-gerados que
para criar e fazer upload de recursos. As solicitações de upload e criação de arquivos podem
use esses IDs pré-gerados. Defina o campo id
nos metadados do arquivo.
Para criar IDs pré-gerados, chame
files.generateIds
com o
número de IDs a serem criados.
Você pode tentar fazer uploads novamente com segurança usando IDs pré-gerados se houver
erro de servidor ou tempo limite. Se o arquivo tiver sido criado corretamente, as sub-redes
novas tentativas retornam um erro HTTP 409
e não criam arquivos duplicados.
Definir texto indexável para tipos de arquivo desconhecidos
Os usuários podem utilizar a interface do Drive para encontrar o conteúdo dos documentos. Você também pode
use files.list
e fullText
para pesquisar conteúdo do seu app. Para mais informações, consulte Pesquisar
arquivos e pastas.
O Drive indexa documentos automaticamente para pesquisa ao
reconhece o tipo de arquivo, incluindo documentos de texto, PDFs, imagens com texto e
e outros tipos comuns. Se o app salvar outros tipos de arquivo (como desenhos,
vídeo e atalhos), você pode melhorar a capacidade de descoberta fornecendo
texto indexável no campo contentHints.indexableText
do arquivo.
Para mais informações sobre texto indexável, consulte Gerenciar arquivo metadados.