L'API Google Drive est compatible avec plusieurs types d'actions de téléchargement et d'exportation, comme indiqué dans le tableau suivant :
| Actions de téléchargement |
|
||||
| Actions d'exportation |
|
Dans l'API Drive, un fichier blob fait référence à tout fichier binaire brut stocké sur Google Drive (comme des images, des vidéos et des PDF), par opposition à un document Google Workspace. Il ne fait pas référence à l'objet
Blob de JavaScript. Pour
obtenir des descriptions détaillées des types de fichiers mentionnés ici, y compris les fichiers blob et
Google Workspace, consultez Types
de fichiers.
Avant de télécharger ou d'exporter le contenu d'un fichier, vérifiez que les utilisateurs peuvent télécharger le
fichier à l'aide du
capabilities.canDownload
champ sur la ressource files.
Le reste de ce document fournit des instructions détaillées pour effectuer ces types d'actions de téléchargement et d'exportation.
Télécharger le contenu d'un fichier blob
Pour télécharger un fichier blob stocké sur Drive, utilisez la files.get méthode avec l'ID du fichier à télécharger et le
alt paramètre
système.
Le paramètre alt=media indique au serveur qu'un téléchargement de contenu est demandé en tant que format de réponse alternatif.
Le paramètre système alt est disponible dans toutes les API Google REST. Si vous utilisez une bibliothèque cliente de l'API Drive, vous n'avez pas besoin de définir explicitement ce paramètre, car la méthode de la bibliothèque cliente ajoute le paramètre alt=media à la requête HTTP sous-jacente.
Les exemples de code suivants montrent comment utiliser la méthode files.get pour télécharger un fichier :
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"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier à télécharger.
- ACCESS_TOKEN : jeton d'accès qui autorise l'accès à l'API.
- FILE_NAME : nom du fichier de sortie.
Les téléchargements de fichiers lancés depuis votre application doivent être autorisés avec une autorisation qui permet un accès en lecture au contenu du fichier. Par exemple, une application utilisant l'autorisation drive.readonly.metadata n'est pas autorisée à télécharger le contenu du fichier.
Les exemples de code de la bibliothèque cliente utilisent l'autorisation de fichier drive limitée qui permet aux utilisateurs d'afficher et de gérer tous vos fichiers Drive. Pour en savoir plus
sur les autorisations Drive, consultez Choisir les autorisations de l'API Google Drive.
Les utilisateurs disposant des autorisations owner (pour les fichiers de Mon Drive) ou
organizer (pour les fichiers de Drive partagé) peuvent limiter le téléchargement
via l'objet
DownloadRestrictionsMetadata. Pour en savoir plus, consultez Empêcher les utilisateurs de télécharger, d'imprimer ou de
copier votre fichier.
Les fichiers identifiés comme abusifs
(tels que les logiciels malveillants) ne peuvent être téléchargés que par le propriétaire du fichier.
De plus, le paramètre de requête acknowledgeAbuse doit être défini sur true pour indiquer que l'utilisateur a reconnu le risque de télécharger des logiciels potentiellement indésirables ou d'autres fichiers abusifs. Votre application doit avertir l'utilisateur de manière interactive avant d'utiliser ce paramètre de requête.
Accéder aux données de fichier en mémoire
Si votre application doit accéder directement aux données du fichier en mémoire (par exemple, en tant que tampon d'octets) au lieu de les enregistrer sur un disque local, vous pouvez ajuster la requête de la bibliothèque cliente ou traiter le flux renvoyé :
Node.js : par défaut, la bibliothèque cliente Node.js renvoie le contenu du fichier en tant que flux
Readable. Pour enregistrer le fichier sur un disque 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);Vous pouvez également renvoyer les données directement en mémoire en tant que
ArrayBufferau lieu d'un flux. Pour cela, définissez le paramètreresponseTypedans les options de votre requête :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 : l'exemple de code Python permettant de télécharger un fichier blob déjà écrit les blocs de téléchargement dans un objet
io.BytesIO()en mémoire. Pour accéder aux octets bruts, appelezfile.getvalue().Java : l'exemple de code Java permettant de télécharger un fichier blob utilise un
java.io.ByteArrayOutputStreampour capturer les octets téléchargés en mémoire. UtilisezoutputStream.toByteArray()pour accéder au tableau d'octets bruts..NET : l'exemple de code C# permettant de télécharger un fichier blob utilise un
System.IO.MemoryStream. Utilisezstream.ToArray()pour accéder au tableau d'octets sous-jacent.Apps Script : l'exemple de code Apps Script permettant de télécharger un fichier blob utilise une méthode
response.getBlob()pour renvoyer un objetBlob. Convertissez-le en tableau d'octets à l'aide de la méthodegetBytes().
Téléchargement partiel
Le téléchargement partiel consiste à ne télécharger qu'une partie spécifiée d'un fichier. Vous
pouvez spécifier la partie du fichier que vous souhaitez télécharger à l'aide d'une plage
d'octets avec l'
Range en-tête. Exemple :
Range: bytes=500-999
Télécharger le contenu d'un fichier blob dans une version antérieure
Pour télécharger le contenu de fichiers blob dans une version antérieure, utilisez la
revisions.get méthode avec l'ID du
fichier à télécharger, l'ID de la révision et le alt paramètre
système.
Le paramètre alt=media indique au serveur qu'un téléchargement de contenu est demandé en tant que format de réponse alternatif. Comme files.get, la méthode revisions.get accepte également le paramètre de requête acknowledgeAbuse et l'en-tête Range.
Vous ne pouvez télécharger que les révisions de contenu de fichier blob marquées comme "Conserver indéfiniment". Si vous souhaitez télécharger une révision, définissez-la d'abord sur "Conserver indéfiniment". Pour en savoir plus, consultez Spécifier les révisions à enregistrer à partir de la suppression automatique.
Pour en savoir plus sur le téléchargement d'une révision, consultez Gérer les opérations de longue durée.
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"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier à télécharger.
- REVISION_ID : ID de la révision à télécharger.
- ACCESS_TOKEN : jeton d'accès qui autorise l'accès à l'API.
- FILE_NAME : nom du fichier de sortie.
Télécharger le contenu d'un fichier blob dans un navigateur
Pour télécharger le contenu de fichiers blob stockés sur Drive dans un
navigateur, au lieu de passer par l'API, utilisez le webContentLink champ de la files ressource. Si l'utilisateur a accès au téléchargement du fichier, un lien permettant de télécharger le fichier et son contenu est renvoyé. Vous pouvez rediriger un utilisateur vers cette URL ou la proposer sous forme de lien cliquable.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=webContentLink" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier pour lequel obtenir le lien de téléchargement.
- ACCESS_TOKEN : jeton d'accès qui autorise l'accès à l'API.
Télécharger le contenu d'un fichier blob à l'aide d'opérations de longue durée
Pour télécharger le contenu de fichiers blob à l'aide d'opérations de longue durée, utilisez
la files.download méthode avec l'ID du
fichier à télécharger. Vous pouvez éventuellement définir l'ID de la révision.
Il s'agit du seul moyen de télécharger des fichiers Google Vids. Si vous tentez d'exporter
des fichiers Google Vids, vous recevez une
fileNotExportable erreur.
Pour en savoir plus, consultez Gérer les opérations de longue durée.
curl
La commande curl suivante lance une opération de longue durée et renvoie une réponse JSON. Pour télécharger le fichier ou interroger cette opération de longue durée, vous devez effectuer une autre requête à l'aide de l'ID renvoyé afin d'obtenir l'URL du contenu. Vous pouvez ensuite effectuer une requête curl finale à cette URL pour télécharger le fichier. Pour en savoir plus, consultez Gérer les opérations de longue durée.
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"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier à télécharger.
- ACCESS_TOKEN : jeton d'accès qui autorise l'accès à l'API.
Exporter le contenu d'un document Google Workspace
Pour exporter le contenu d'un document Google Workspace en octets, utilisez la files.export méthode avec l'ID du fichier à exporter et
le type MIME approprié. Le contenu exporté est limité à 10 Mo.
Les exemples de code suivants montrent comment utiliser la méthode files.export pour exporter un document Google Workspace au format 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"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier à télécharger.
- ACCESS_TOKEN : jeton d'accès qui autorise l'accès à l'API.
- FILE_NAME : nom du fichier de sortie.
Les exemples de code de la bibliothèque cliente utilisent l'autorisation drive limitée qui permet aux utilisateurs d'afficher et de gérer tous vos fichiers Drive. Pour en savoir plus
sur les autorisations Drive, consultez Choisir les autorisations de l'API Google Drive.
Les exemples de code déclarent également le type MIME d'exportation comme application/pdf. Pour obtenir la
liste complète de tous les types MIME d'exportation compatibles pour chaque document Google Workspace, consultez Types MIME d'exportation pour les documents Google Workspace.
Exporter le contenu d'un document Google Workspace dans un navigateur
Pour exporter le contenu d'un document Google Workspace dans un navigateur, utilisez le
exportLinks champ de la
files ressource. Selon le type de document, un lien permettant de télécharger le fichier et son contenu est renvoyé pour chaque type MIME disponible. Vous pouvez rediriger un utilisateur vers une URL ou la proposer sous forme de lien cliquable.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=id,name,exportLinks" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier pour lequel obtenir le lien de téléchargement.
- ACCESS_TOKEN : jeton d'accès qui autorise l'accès à l'API.
Exporter le contenu d'un document Google Workspace dans une version antérieure dans un navigateur
Pour exporter le contenu d'un document Google Workspace dans une version antérieure dans un
navigateur, utilisez la méthode revisions.get avec
l'ID du fichier à télécharger et l'ID de la révision pour générer un lien d'exportation
à partir duquel vous pouvez effectuer le téléchargement. Si l'utilisateur a accès au téléchargement du fichier, un lien permettant de télécharger le fichier et son contenu est renvoyé. Vous pouvez rediriger un utilisateur vers cette URL ou la proposer sous forme de lien cliquable.
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"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier à télécharger.
- REVISION_ID : ID de la révision à télécharger.
- ACCESS_TOKEN : jeton d'accès qui autorise l'accès à l'API.
Exporter le contenu d'un document Google Workspace à l'aide d'opérations de longue durée
Pour exporter le contenu d'un document Google Workspace à l'aide d'opérations de longue durée
(LRO), utilisez la files.download méthode avec
l'ID du fichier à télécharger et l'ID de la révision. Pour en savoir plus,
consultez Gérer les opérations de longue durée.
curl
La commande curl suivante lance une opération de longue durée et renvoie une réponse JSON. Pour télécharger le fichier ou interroger cette opération de longue durée, vous devez effectuer une autre requête à l'aide de l'ID renvoyé afin d'obtenir l'URL du contenu. Vous pouvez ensuite effectuer une requête curl finale à cette URL pour télécharger le fichier. Pour en savoir plus, consultez Gérer les opérations de longue durée.
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"
Remplacez les éléments suivants :
- FILE_ID : ID du fichier à télécharger.
- MIME_TYPE : type MIME vers lequel exporter.
- REVISION_ID : ID de la révision à télécharger.
- ACCESS_TOKEN : jeton d'accès qui autorise l'accès à l'API.