A API Google Drive é compatível com vários tipos de ações de download e exportação, conforme listado na tabela a seguir:
| Ações de download |
|
||||
| Ações de exportação |
|
Na API Drive, um arquivo blob se refere a qualquer arquivo binário bruto armazenado no Google Drive, como imagens, vídeos e PDFs, em vez de um documento do Google Workspace. Não se refere ao objeto Blob do JavaScript. Para descrições detalhadas dos tipos de arquivo mencionados aqui, incluindo blob e arquivos do Google Workspace, consulte Tipos de arquivo.
Antes de baixar ou exportar o conteúdo do arquivo, verifique se os usuários podem fazer o download usando o campo capabilities.canDownload no recurso files.
O restante deste documento fornece instruções detalhadas para realizar esses tipos de ações de download e exportação.
Baixar conteúdo do arquivo blob
Para fazer o download de um arquivo blob armazenado no Drive, use o método files.get com o ID do arquivo a ser baixado e o parâmetro
de sistema alt.
O parâmetro alt=media informa ao servidor que um download de conteúdo está sendo
solicitado como um formato de resposta alternativo.
O parâmetro de sistema alt está disponível em todas as APIs REST do Google. Se você usar uma biblioteca de cliente da API Drive, não será necessário definir explicitamente esse parâmetro, já que o método da biblioteca de cliente adiciona o parâmetro alt=media à solicitação HTTP subjacente.
Os exemplos de código a seguir mostram como usar o método files.get para baixar um
arquivo:
Apps Script
/**
* Downloads a file from Drive.
* @param {string} fileId The ID of the file to download.
* @return {Blob} The file content as a Blob.
*/
function downloadFile(fileId) {
var url = 'https://www.googleapis.com/drive/v3/files/' + fileId + '?alt=media';
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
}
});
return response.getBlob();
}
Java
Python
Node.js
PHP
.NET
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID?alt=media" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME"
Substitua:
- FILE_ID: o ID do arquivo a ser baixado.
- ACCESS_TOKEN: o token de acesso que concede acesso à API.
- FILE_NAME: o nome do arquivo de saída.
Os downloads de arquivos iniciados no seu app precisam ser autorizados com um escopo que permita
acesso de leitura ao conteúdo do arquivo. Por exemplo, um app que usa o
escopo drive.readonly.metadata não tem autorização para fazer o download do conteúdo do arquivo.
As amostras de código da biblioteca de cliente usam o escopo de arquivo drive restrito, que permite
aos usuários visualizar e gerenciar todos os arquivos do Drive. Para saber mais sobre os escopos do Drive, consulte Escolher escopos da API Google Drive.
Os usuários com permissões owner (para arquivos do Meu Drive) ou organizer (para arquivos de drives compartilhados) podem restringir o download usando o objeto DownloadRestrictionsMetadata. Para mais informações, consulte Impedir que os usuários baixem, imprimam ou copiem seu arquivo.
Os arquivos identificados como abusivos
(como software malicioso) só podem ser baixados pelo proprietário.
Além disso, o parâmetro de consulta acknowledgeAbuse precisa ser definido como true para indicar que o usuário reconheceu o risco de fazer o download de software indesejado ou outros arquivos abusivos. Seu aplicativo precisa avisar o usuário de forma interativa antes de usar esse parâmetro de consulta.
Acessar dados de arquivos na memória
Se o aplicativo precisar acessar os dados do arquivo diretamente na memória (por exemplo, como um buffer de bytes) em vez de salvá-los em um disco local, ajuste a solicitação da biblioteca de cliente ou processe o fluxo retornado:
Node.js: por padrão, a biblioteca de cliente do Node.js retorna o conteúdo do arquivo como um fluxo
Readable. Para salvar o arquivo no disco local:const fs = require('fs'); const dest = fs.createWriteStream('/path/to/dest/file.ext'); const response = await service.files.get( { fileId, alt: 'media' }, { responseType: 'stream' } ); response.data .on('end', () => { console.log('Download complete.'); }) .on('error', (err) => { console.error('Error downloading file.', err); }) .pipe(dest);Outra opção é retornar os dados diretamente na memória como um
ArrayBufferem vez de um fluxo. Para isso, defina o parâmetroresponseTypenas opções de solicitação:const file = await service.files.get({ fileId, alt: 'media', }, { responseType: 'arraybuffer' }); // Convert the ArrayBuffer to a Node.js Buffer object. const buffer = Buffer.from(file.data);Python: o exemplo de código em Python para fazer o download de um arquivo blob já grava os blocos de download em um objeto
io.BytesIO()na memória. Para acessar os bytes brutos, chamefile.getvalue().Java: o exemplo de código Java para fazer o download de um arquivo blob usa um
java.io.ByteArrayOutputStreampara capturar os bytes baixados na memória. UseoutputStream.toByteArray()para acessar a matriz de bytes bruta..NET: o exemplo de código C# para baixar um arquivo blob usa um
System.IO.MemoryStream. Usestream.ToArray()para acessar a matriz de bytes subjacente.Apps Script: o exemplo de código do Apps Script para baixar um arquivo blob usa um método
response.getBlob()para retornar um objetoBlob. Converta isso em uma matriz de bytes usando o métodogetBytes().
Download parcial
O download parcial envolve o download apenas de uma parte especificada de um arquivo. É
possível especificar a parte do arquivo que você quer baixar usando um intervalo
de bytes com o
cabeçalho Range. Exemplo:
Range: bytes=500-999
Baixar o conteúdo do arquivo blob em uma versão anterior
Para fazer o download do conteúdo de arquivos blob em uma versão anterior, use o método
revisions.get com o ID do
arquivo a ser baixado, o ID da revisão e o alt parâmetro
do sistema.
O parâmetro alt=media informa ao servidor que um download de conteúdo está sendo
solicitado como um formato de resposta alternativo. Assim como files.get, o método
revisions.get também aceita o parâmetro de consulta acknowledgeAbuse e
o cabeçalho Range.
Só é possível baixar revisões de conteúdo de arquivos blob marcadas como "Manter indefinidamente". Se quiser baixar uma revisão, defina como "Manter indefinidamente" primeiro. Para mais informações, consulte Especificar revisões para salvar da exclusão automática.
Para mais informações sobre como baixar uma revisão, consulte Gerenciar operações de longa duração.
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/revisions/REVISION_ID?alt=media" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME"
Substitua:
- FILE_ID: o ID do arquivo a ser baixado.
- REVISION_ID: o ID da revisão a ser baixada.
- ACCESS_TOKEN: o token de acesso que concede acesso à API.
- FILE_NAME: o nome do arquivo de saída.
Fazer o download do conteúdo de um arquivo blob em um navegador
Para baixar o conteúdo de arquivos blob armazenados no Drive em um navegador, em vez de usar a API, use o campo webContentLink do recurso files. Se o usuário tiver acesso para fazer o download do arquivo,
um link para baixar o arquivo e o conteúdo dele será retornado. É possível redirecionar um usuário para esse URL ou oferecê-lo como um link clicável.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=webContentLink" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
Substitua:
- FILE_ID: o ID do arquivo para receber o link de download.
- ACCESS_TOKEN: o token de acesso que concede acesso à API.
Baixar conteúdo de arquivo blob usando operações de longa duração
Para baixar o conteúdo de arquivos blob usando operações de longa duração (LROs), use o método files.download com o ID do arquivo a ser baixado. Você pode definir o ID da revisão, se quiser.
Essa é a única maneira de baixar arquivos do Google Vids. Se você tentar exportar arquivos do Google Vids, vai receber um erro fileNotExportable.
Para mais informações, consulte Gerenciar operações de longa
duração.
curl
O comando curl a seguir inicia uma LRO e retorna uma resposta JSON. Para baixar o arquivo ou fazer uma pesquisa de LRO, faça outra solicitação usando o ID retornado para receber o URL do conteúdo. Em seguida, faça uma solicitação curl final para esse URL e baixe o arquivo. Para mais informações, consulte Gerenciar operações de longa duração.
curl --request POST "https://www.googleapis.com/drive/v3/files/FILE_ID/download?mimeType=video/mp4" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Length: 0" \
--header "Accept: application/json"
Substitua:
- FILE_ID: o ID do arquivo a ser baixado.
- ACCESS_TOKEN: o token de acesso que concede acesso à API.
Exportar conteúdo de documentos do Google Workspace
Para exportar o conteúdo de bytes de um documento do Google Workspace, use o método files.export com o ID do arquivo a ser exportado e o tipo MIME correto. O conteúdo exportado é limitado a 10 MB.
Os exemplos de código a seguir mostram como usar o método files.export para exportar um
documento do Google Workspace em formato PDF:
Apps Script
/**
* Exports a Google Workspace document.
* @param {string} fileId The ID of the file to export.
* @param {string} mimeType The MIME type to export to.
* @return {Blob} The exported content as a Blob.
*/
function exportPdf(fileId, mimeType) {
var url = 'https://www.googleapis.com/drive/v3/files/' + fileId + '/export?mimeType=' + encodeURIComponent(mimeType);
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
}
});
return response.getBlob();
}
Java
Python
Node.js
PHP
.NET
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/export?mimeType=application/pdf" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME.pdf"
Substitua:
- FILE_ID: o ID do arquivo a ser baixado.
- ACCESS_TOKEN: o token de acesso que concede acesso à API.
- FILE_NAME: o nome do arquivo de saída.
As amostras de código da biblioteca de cliente usam o escopo restrito drive, que permite
aos usuários visualizar e gerenciar todos os arquivos do Drive. Para saber mais sobre os escopos do Drive, consulte Escolher escopos da API Google Drive.
Os exemplos de código também declaram o tipo MIME de exportação como application/pdf. Para uma lista completa de todos os tipos MIME de exportação compatíveis com cada documento do Google Workspace, consulte Tipos MIME de exportação para documentos do Google Workspace.
Exportar conteúdo de documentos do Google Workspace em um navegador
Para exportar o conteúdo de um documento do Google Workspace em um navegador, use o campo exportLinks do recurso files. Dependendo do tipo de documento, um link para baixar o arquivo e o conteúdo dele é retornado para cada tipo MIME disponível. É possível redirecionar um usuário para um URL ou oferecê-lo como um link clicável.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=id,name,exportLinks" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
Substitua:
- FILE_ID: o ID do arquivo para receber o link de download.
- ACCESS_TOKEN: o token de acesso que concede acesso à API.
Exportar conteúdo de documentos do Google Workspace em uma versão anterior em um navegador
Para exportar o conteúdo de um documento do Google Workspace em uma versão anterior em um navegador, use o método revisions.get com o ID do arquivo a ser baixado e o ID da revisão para gerar um link de exportação em que você pode fazer o download. Se o usuário tiver acesso para baixar o arquivo, um link para fazer o download do arquivo e do conteúdo dele será retornado. É possível
redirecionar um usuário para esse URL ou oferecê-lo como um link clicável.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID/revisions/REVISION_ID?fields=id,name,exportLinks" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
Substitua:
- FILE_ID: o ID do arquivo a ser baixado.
- REVISION_ID: o ID da revisão a ser baixada.
- ACCESS_TOKEN: o token de acesso que concede acesso à API.
Exportar conteúdo de documentos do Google Workspace usando operações de longa duração
Para exportar o conteúdo de documentos do Google Workspace usando operações de longa duração (LROs), use o método files.download com o ID do arquivo a ser baixado e o ID da revisão. Para mais informações,
consulte Gerenciar operações de longa duração.
curl
O comando curl a seguir inicia uma LRO e retorna uma resposta JSON. Para baixar o arquivo ou fazer uma pesquisa de LRO, faça outra solicitação usando o ID retornado para receber o URL do conteúdo. Em seguida, faça uma solicitação curl final para esse URL e baixe o arquivo. Para mais informações, consulte Gerenciar operações de longa duração.
curl --request POST "https://www.googleapis.com/drive/v3/files/FILE_ID/download?mimeType=MIME_TYPE&revisionId=REVISION_ID" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Length: 0" \
--header "Accept: application/json"
Substitua:
- FILE_ID: o ID do arquivo a ser baixado.
- MIME_TYPE: o tipo MIME para exportar.
- REVISION_ID: o ID da revisão a ser baixada.
- ACCESS_TOKEN: o token de acesso que concede acesso à API.