API Google Drive поддерживает несколько типов операций загрузки и экспорта, как указано в следующей таблице:
| Действия по загрузке |
| ||||
| Экспортные действия |
|
Перед загрузкой или экспортом содержимого файла убедитесь, что пользователи могут загрузить файл, используя поле capabilities.canDownload в ресурсе files .
Описание упомянутых здесь типов файлов, включая файлы BLOB-объектов и файлы Google Workspace, см. в разделе «Типы файлов» .
Остальная часть этого документа содержит подробные инструкции по выполнению подобных операций загрузки и экспорта.
Скачать содержимое файла BLOB
Для загрузки файла BLOB, хранящегося на Google Диск, используйте метод files.get , указав идентификатор загружаемого файла и параметр alt=media URL. Параметр alt=media URL сообщает серверу, что запрашивается загрузка контента в качестве альтернативного формата ответа.
Параметр alt=media URL — это системный параметр, доступный во всех REST API Google. Если вы используете клиентскую библиотеку Drive API, вам не нужно явно указывать этот параметр, поскольку метод клиентской библиотеки добавляет параметр alt=media URL к базовому HTTP-запросу.
Приведенные ниже примеры кода демонстрируют, как использовать метод files.get для загрузки файла:
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
.СЕТЬ
локон
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID?alt=media" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME"
Замените следующее:
- FILE_ID : идентификатор файла для скачивания.
- ACCESS_TOKEN : токен доступа, предоставляющий доступ к API.
- FILE_NAME : имя выходного файла.
Загрузка файлов, начатая из вашего приложения, должна быть авторизована с использованием области действия, разрешающей чтение содержимого файла. Например, приложение, использующее область действия drive.readonly.metadata не имеет права загружать содержимое файла. В примерах кода клиентской библиотеки используется ограниченная область действия файлов drive , которая позволяет пользователям просматривать и управлять всеми вашими файлами Google Drive. Чтобы узнать больше об областях действия Google Drive, см. раздел «Выбор областей действия API Google Drive» .
Пользователи с правами owner (для файлов в моем Google Диске) или правами organizer (для файлов на общем диске) могут ограничивать загрузку с помощью объекта DownloadRestrictionsMetadata . Для получения дополнительной информации см. раздел «Запрет пользователям загружать, распечатывать или копировать ваш файл» .
Файлы, помеченные как содержащие вредоносный контент (например, вредоносное программное обеспечение), могут быть загружены только владельцем файла. Кроме того, необходимо указать параметр get acknowledgeAbuse=true , чтобы показать, что пользователь осознал риск загрузки потенциально нежелательного программного обеспечения или других вредоносных файлов. Ваше приложение должно интерактивно предупреждать пользователя перед использованием этого параметра запроса.
Частичная загрузка
Частичная загрузка подразумевает скачивание только указанной части файла. Вы можете указать часть файла, которую хотите загрузить, используя диапазон байтов в заголовке Range . Например:
Range: bytes=500-999
Скачать содержимое файла BLOB из более ранней версии
Вы можете загрузить только те версии содержимого BLOB-файлов, которые помечены как «Сохранить навсегда». Если вы хотите загрузить версию, сначала установите для нее параметр «Сохранить навсегда». Для получения дополнительной информации см. раздел «Указание версий для сохранения без автоматического удаления» .
Для загрузки содержимого BLOB-файлов более ранней версии используйте метод revisions.get , указав идентификатор загружаемого файла, идентификатор ревизии и параметр alt=media URL. Параметр alt=media URL сообщает серверу, что запрашивается загрузка содержимого в альтернативном формате ответа. Аналогично методу files.get , метод revisions.get также принимает необязательный параметр запроса acknowledgeAbuse и заголовок Range . Для получения дополнительной информации см. раздел «Управление длительными операциями» .
локон
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/revisions/REVISION_ID?alt=media" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME"
Замените следующее:
- FILE_ID : идентификатор файла для скачивания.
- REVISION_ID : идентификатор версии для загрузки.
- ACCESS_TOKEN : токен доступа, предоставляющий доступ к API.
- FILE_NAME : имя выходного файла.
Скачать содержимое файла BLOB в браузере
Для загрузки содержимого BLOB-файлов, хранящихся на Google Диск, непосредственно в браузере, а не через API, используйте поле webContentLink ресурса files . Если у пользователя есть доступ к загрузке файла, возвращается ссылка для скачивания файла и его содержимого. Вы можете либо перенаправить пользователя на этот URL, либо предложить его в виде кликабельной ссылки.
локон
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=webContentLink" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
Замените следующее:
- FILE_ID : идентификатор файла, для которого нужно получить ссылку для скачивания.
- ACCESS_TOKEN : токен доступа, предоставляющий доступ к API.
Загрузка содержимого BLOB-файлов с использованием длительных операций.
Для загрузки содержимого BLOB-файлов с использованием операций длительного выполнения (LRO) используйте метод files.download , указав идентификатор загружаемого файла. При желании можно указать идентификатор ревизии.
Это единственный способ загрузить файлы Google Vids. При попытке экспорта файлов Google Vids вы получите ошибку fileNotExportable . Для получения дополнительной информации см. раздел «Управление длительными операциями» .
локон
Следующая команда curl инициирует операцию LRO и возвращает ответ в формате JSON. Чтобы загрузить файл или опрашивать эту операцию LRO, необходимо выполнить еще один запрос, используя возвращенный ID, чтобы получить URL-адрес содержимого. Затем можно выполнить заключительный запрос curl к этому URL-адресу для загрузки файла. Дополнительную информацию см. в разделе «Управление длительными операциями» .
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"
Замените следующее:
- FILE_ID : идентификатор файла для скачивания.
- ACCESS_TOKEN : токен доступа, предоставляющий доступ к API.
Экспорт содержимого документа Google Workspace
Для экспорта содержимого документа Google Workspace в байтах используйте метод files.export , указав идентификатор файла для экспорта и правильный MIME-тип. Экспортируемое содержимое ограничено 10 МБ.
Приведенные ниже примеры кода демонстрируют, как использовать метод files.export для экспорта документа Google Workspace в формат 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
.СЕТЬ
локон
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/export?mimeType=application/pdf" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME.pdf"
Замените следующее:
- FILE_ID : идентификатор файла для скачивания.
- ACCESS_TOKEN : токен доступа, предоставляющий доступ к API.
- FILE_NAME : имя выходного файла.
В примерах кода клиентской библиотеки используется ограниченная область действия drive , которая позволяет пользователям просматривать и управлять всеми вашими файлами в Google Диск. Чтобы узнать больше об областях действия Google Диск, см. раздел «Выбор областей действия API Google Диск» .
В примерах кода также указан MIME-тип экспорта как application/pdf . Полный список всех поддерживаемых MIME-типов экспорта для каждого документа Google Workspace см. в разделе «MIME-типы экспорта для документов Google Workspace» .
Экспорт содержимого документа Google Workspace в браузере
Для экспорта содержимого документа Google Workspace в браузере используйте поле exportLinks ресурса files . В зависимости от типа документа для каждого доступного MIME-типа возвращается ссылка для загрузки файла и его содержимого. Вы можете либо перенаправить пользователя на URL-адрес, либо предложить ссылку в виде кликабельного файла.
локон
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=id,name,exportLinks" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
Замените следующее:
- FILE_ID : идентификатор файла, для которого нужно получить ссылку для скачивания.
- ACCESS_TOKEN : токен доступа, предоставляющий доступ к API.
Экспорт содержимого документа Google Workspace в более ранней версии в браузере.
Для экспорта содержимого документа Google Workspace в более ранней версии в браузере используйте метод revisions.get , указав идентификатор загружаемого файла и идентификатор версии, чтобы сгенерировать ссылку для экспорта, по которой можно выполнить загрузку. Если у пользователя есть доступ к загрузке файла, возвращается ссылка для скачивания файла и его содержимого. Вы можете либо перенаправить пользователя на этот URL-адрес, либо предложить его в виде кликабельной ссылки.
локон
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"
Замените следующее:
- FILE_ID : идентификатор файла для скачивания.
- REVISION_ID : идентификатор версии для загрузки.
- ACCESS_TOKEN : токен доступа, предоставляющий доступ к API.
Экспорт содержимого документа Google Workspace с использованием длительных операций
Для экспорта содержимого документа Google Workspace с использованием длительных операций (LRO) используйте метод files.download , указав идентификатор загружаемого файла и идентификатор версии. Дополнительную информацию см. в разделе «Управление длительными операциями» .
локон
Следующая команда curl инициирует операцию LRO и возвращает ответ в формате JSON. Чтобы загрузить файл или опрашивать эту операцию LRO, необходимо выполнить еще один запрос, используя возвращенный ID, чтобы получить URL-адрес содержимого. Затем можно выполнить заключительный запрос curl к этому URL-адресу для загрузки файла. Дополнительную информацию см. в разделе «Управление длительными операциями» .
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"
Замените следующее:
- FILE_ID : идентификатор файла для скачивания.
- MIME_TYPE : MIME-тип, в который следует экспортировать.
- REVISION_ID : идентификатор версии для загрузки.
- ACCESS_TOKEN : токен доступа, предоставляющий доступ к API.