Загрузка и экспорт файлов

API Google Drive поддерживает несколько типов операций загрузки и экспорта, как указано в следующей таблице:

Действия по загрузке
Получение содержимого файла BLOB с помощью метода files.get с параметром alt=media .
Получение содержимого BLOB-файла более ранней версии с помощью метода revisions.get с параметром alt=media .
Отображение содержимого файла BLOB в браузере с помощью поля webContentLink .
Загрузка содержимого BLOB-файлов с помощью метода files.download с использованием длительных операций. Это единственный способ загрузки файлов Google Videos.
Экспортные действия
Сохраните содержимое документа Google Workspace в формате, который может обрабатывать ваше приложение, используя метод files.export .
Отображение содержимого документа Google Workspace в браузере с помощью поля exportLinks .
Отображение содержимого документа Google Workspace в более ранней версии в браузере с помощью поля exportLinks .
Содержимое документа Google Workspace, использующее метод files.download , задействует длительные операции.

В API Google Диска файл типа «blob» обозначает любой необработанный двоичный файл, хранящийся на Google Диске (например, изображения, видео и PDF-файлы), в отличие от документа Google Workspace. Он не относится к объекту Blob в JavaScript. Подробное описание упомянутых здесь типов файлов, включая файлы типа «blob» и файлы Google Workspace, см. в разделе «Типы файлов» .

Перед загрузкой или экспортом содержимого файла убедитесь, что пользователи могут загрузить файл, используя поле capabilities.canDownload в ресурсе files .

Остальная часть этого документа содержит подробные инструкции по выполнению подобных операций загрузки и экспорта.

Скачать содержимое файла BLOB

Для загрузки файла BLOB, хранящегося на Google Диск, используйте метод files.get , указав идентификатор загружаемого файла и системный параметр alt . Параметр alt=media сообщает серверу, что запрашивается загрузка контента в качестве альтернативного формата ответа.

Параметр alt доступен во всех REST API Google. Если вы используете клиентскую библиотеку API Google Drive, вам не нужно явно указывать этот параметр, поскольку метод клиентской библиотеки добавляет параметр alt=media к базовому 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

drive/snippets/drive_v3/src/main/java/DownloadFile.java
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Arrays;

/* Class to demonstrate use-case of drive's download file. */
public class DownloadFile {

  /**
   * Download a Document file in PDF format.
   *
   * @param realFileId file ID of any workspace document format file.
   * @return byte array stream if successful, {@code null} otherwise.
   * @throws IOException if service account credentials file not found.
   */
  public static ByteArrayOutputStream downloadFile(String realFileId) throws IOException {
        /* Load pre-authorized user credentials from the environment.
           TODO(developer) - See https://developers.google.com/identity for
          guides on implementing OAuth2 for your application.*/
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
        .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE));
    HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
        credentials);

    // Build a new authorized API client service.
    Drive service = new Drive.Builder(new NetHttpTransport(),
        GsonFactory.getDefaultInstance(),
        requestInitializer)
        .setApplicationName("Drive samples")
        .build();

    try {
      OutputStream outputStream = new ByteArrayOutputStream();

      service.files().get(realFileId)
          .executeMediaAndDownloadTo(outputStream);

      return (ByteArrayOutputStream) outputStream;
    } catch (GoogleJsonResponseException e) {
      // TODO(developer) - handle error appropriately
      System.err.println("Unable to move file: " + e.getDetails());
      throw e;
    }
  }
}

Python

drive/snippets/drive-v3/file_snippet/download_file.py
import io

import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaIoBaseDownload


def download_file(real_file_id):
  """Downloads a file
  Args:
      real_file_id: ID of the file to download
  Returns : IO object with location.

  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()

  try:
    # create drive api client
    service = build("drive", "v3", credentials=creds)

    file_id = real_file_id

    # pylint: disable=maybe-no-member
    request = service.files().get_media(fileId=file_id)
    file = io.BytesIO()
    downloader = MediaIoBaseDownload(file, request)
    done = False
    while done is False:
      status, done = downloader.next_chunk()
      print(f"Download {int(status.progress() * 100)}.")

  except HttpError as error:
    print(f"An error occurred: {error}")
    file = None

  return file.getvalue()


if __name__ == "__main__":
  download_file(real_file_id="1KuPmvGq8yoYgbfW74OENMCB5H0n_2Jm9")

Node.js

drive/snippets/drive_v3/file_snippets/download_file.js
import {GoogleAuth} from 'google-auth-library';
import {google} from 'googleapis';

/**
 * Downloads a file from Google Drive.
 * @param {string} fileId The ID of the file to download.
 * @return {Promise<number>} The status of the download.
 */
async function downloadFile(fileId) {
  // Authenticate with Google and get an authorized client.
  // TODO (developer): Use an appropriate auth mechanism for your app.
  const auth = new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/drive',
  });

  // Create a new Drive API client (v3).
  const service = google.drive({version: 'v3', auth});

  // Download the file.
  const file = await service.files.get({
    fileId,
    alt: 'media',
  });

  // Print the status of the download.
  console.log(file.status);
  return file.status;
}

PHP

drive/snippets/drive_v3/src/DriveDownloadFile.php
<?php
use Google\Client;
use Google\Service\Drive;
function downloadFile()
 {
    try {

      $client = new Client();
      $client->useApplicationDefaultCredentials();
      $client->addScope(Drive::DRIVE);
      $driveService = new Drive($client);
      $realFileId = readline("Enter File Id: ");
      $fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M';
      $fileId = $realFileId;
      $response = $driveService->files->get($fileId, array(
          'alt' => 'media'));
      $content = $response->getBody()->getContents();
      return $content;

    } catch(Exception $e) {
      echo "Error Message: ".$e;
    }

}

.СЕТЬ

drive/snippets/drive_v3/DriveV3Snippets/DownloadFile.cs
using Google.Apis.Auth.OAuth2;
using Google.Apis.Download;
using Google.Apis.Drive.v3;
using Google.Apis.Services;

namespace DriveV3Snippets
{
    // Class to demonstrate use-case of drive's download file.
    public class DownloadFile
    {
        /// <summary>
        /// Download a Document file in PDF format.
        /// </summary>
        /// <param name="fileId">file ID of any workspace document format file.</param>
        /// <returns>byte array stream if successful, null otherwise.</returns>
        public static MemoryStream DriveDownloadFile(string fileId)
        {
            try
            {
                /* Load pre-authorized user credentials from the environment.
                 TODO(developer) - See https://developers.google.com/identity for 
                 guides on implementing OAuth2 for your application. */
                GoogleCredential credential = GoogleCredential
                    .GetApplicationDefault()
                    .CreateScoped(DriveService.Scope.Drive);

                // Create Drive API service.
                var service = new DriveService(new BaseClientService.Initializer
                {
                    HttpClientInitializer = credential,
                    ApplicationName = "Drive API Snippets"
                });

                var request = service.Files.Get(fileId);
                var stream = new MemoryStream();

                // Add a handler which will be notified on progress changes.
                // It will notify on each chunk download and when the
                // download is completed or failed.
                request.MediaDownloader.ProgressChanged +=
                    progress =>
                    {
                        switch (progress.Status)
                        {
                            case DownloadStatus.Downloading:
                            {
                                Console.WriteLine(progress.BytesDownloaded);
                                break;
                            }
                            case DownloadStatus.Completed:
                            {
                                Console.WriteLine("Download complete.");
                                break;
                            }
                            case DownloadStatus.Failed:
                            {
                                Console.WriteLine("Download failed.");
                                break;
                            }
                        }
                    };
                request.Download(stream);

                return stream;
            }
            catch (Exception e)
            {
                // TODO(developer) - handle error appropriately
                if (e is AggregateException)
                {
                    Console.WriteLine("Credential Not found");
                }
                else
                {
                    throw;
                }
            }
            return null;
        }
    }
}

локон

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 . Для получения дополнительной информации см. раздел «Запрет пользователям загружать, распечатывать или копировать ваш файл» .

Файлы, помеченные как содержащие вредоносный контент (например, вредоносное программное обеспечение), могут быть загружены только владельцем файла. Кроме того, параметр запроса acknowledgeAbuse должен быть установлен в true , чтобы указать, что пользователь подтвердил факт загрузки потенциально нежелательного программного обеспечения или других вредоносных файлов. Ваше приложение должно интерактивно предупреждать пользователя перед использованием этого параметра запроса.

Доступ к данным файла в памяти

Если вашему приложению необходимо получать доступ к данным файла непосредственно в памяти (например, в виде буфера байтов), а не сохранять их на локальный диск, вы можете скорректировать запрос клиентской библиотеки или обработать возвращаемый поток:

  • Node.js : По умолчанию клиентская библиотека Node.js возвращает содержимое файла в виде потока Readable . Чтобы сохранить файл на локальный диск:

    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);
    

    В качестве альтернативы, чтобы возвращать данные непосредственно в память в виде ArrayBuffer , а не потока, установите параметр responseType в параметрах запроса:

    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 : В приведенном примере кода на Python для загрузки файла BLOB-объектов загружаемые фрагменты уже записываются в объект io.BytesIO() в оперативной памяти. Для доступа к исходным байтам вызовите метод file.getvalue() .

  • Java : В приведенном примере кода на Java для загрузки файла BLOB используется java.io.ByteArrayOutputStream для захвата загруженных байтов в память. Используйте outputStream.toByteArray() для доступа к исходному массиву байтов.

  • .NET : В примере кода на C# для загрузки файла BLOB-объекта используется System.IO.MemoryStream . Используйте stream.ToArray() для доступа к базовому массиву байтов.

  • Apps Script : В приведенном примере кода Apps Script для загрузки файла BLOB используется метод response.getBlob() , который возвращает объект Blob . Преобразуйте его в массив байтов с помощью метода getBytes() .

Частичная загрузка

Частичная загрузка подразумевает скачивание только указанной части файла. Вы можете указать часть файла, которую хотите загрузить, используя диапазон байтов в заголовке Range . Например:

Range: bytes=500-999

Скачать содержимое файла BLOB из более ранней версии

Для загрузки содержимого BLOB-файлов более ранней версии используйте метод revisions.get , указав идентификатор загружаемого файла, идентификатор ревизии и системный параметр alt . Параметр alt=media сообщает серверу, что запрашивается загрузка содержимого в качестве альтернативного формата ответа. Аналогично методу files.get , метод revisions.get также принимает параметр запроса acknowledgeAbuse и заголовок Range .

Вы можете загрузить только те версии содержимого BLOB-файлов, которые помечены как «Сохранить навсегда». Если вы хотите загрузить версию, сначала установите для нее параметр «Сохранить навсегда». Для получения дополнительной информации см. раздел «Указание версий для сохранения без автоматического удаления» .

Дополнительную информацию о загрузке обновленной версии см. в разделе «Управление длительными операциями» .

локон

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

drive/snippets/drive_v3/src/main/java/ExportPdf.java
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Arrays;

/* Class to demonstrate use-case of drive's export pdf. */
public class ExportPdf {

  /**
   * Download a Document file in PDF format.
   *
   * @param realFileId file ID of any workspace document format file.
   * @return byte array stream if successful, {@code null} otherwise.
   * @throws IOException if service account credentials file not found.
   */
  public static ByteArrayOutputStream exportPdf(String realFileId) throws IOException {
    // Load pre-authorized user credentials from the environment.
    // TODO(developer) - See https://developers.google.com/identity for
    // guides on implementing OAuth2 for your application.
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
        .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE));
    HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
        credentials);

    // Build a new authorized API client service.
    Drive service = new Drive.Builder(new NetHttpTransport(),
        GsonFactory.getDefaultInstance(),
        requestInitializer)
        .setApplicationName("Drive samples")
        .build();

    OutputStream outputStream = new ByteArrayOutputStream();
    try {
      service.files().export(realFileId, "application/pdf")
          .executeMediaAndDownloadTo(outputStream);

      return (ByteArrayOutputStream) outputStream;
    } catch (GoogleJsonResponseException e) {
      // TODO(developer) - handle error appropriately
      System.err.println("Unable to export file: " + e.getDetails());
      throw e;
    }
  }
}

Python

drive/snippets/drive-v3/file_snippet/export_pdf.py
import io

import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaIoBaseDownload


def export_pdf(real_file_id):
  """Download a Document file in PDF format.
  Args:
      real_file_id : file ID of any workspace document format file
  Returns : IO object with location

  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()

  try:
    # create drive api client
    service = build("drive", "v3", credentials=creds)

    file_id = real_file_id

    # pylint: disable=maybe-no-member
    request = service.files().export_media(
        fileId=file_id, mimeType="application/pdf"
    )
    file = io.BytesIO()
    downloader = MediaIoBaseDownload(file, request)
    done = False
    while done is False:
      status, done = downloader.next_chunk()
      print(f"Download {int(status.progress() * 100)}.")

  except HttpError as error:
    print(f"An error occurred: {error}")
    file = None

  return file.getvalue()


if __name__ == "__main__":
  export_pdf(real_file_id="1zbp8wAyuImX91Jt9mI-CAX_1TqkBLDEDcr2WeXBbKUY")

Node.js

drive/snippets/drive_v3/file_snippets/export_pdf.js
import {GoogleAuth} from 'google-auth-library';
import {google} from 'googleapis';

/**
 * Exports a Google Doc as a PDF.
 * @param {string} fileId The ID of the file to export.
 * @return {Promise<number>} The status of the export request.
 */
async function exportPdf(fileId) {
  // Authenticate with Google and get an authorized client.
  // TODO (developer): Use an appropriate auth mechanism for your app.
  const auth = new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/drive',
  });

  // Create a new Drive API client (v3).
  const service = google.drive({version: 'v3', auth});

  // Export the file as a PDF.
  const result = await service.files.export({
    fileId,
    mimeType: 'application/pdf',
  });

  // Print the status of the export.
  console.log(result.status);
  return result.status;
}

PHP

drive/snippets/drive_v3/src/DriveExportPdf.php
<?php
use Google\Client;
use Google\Service\Drive;
function exportPdf()
{
    try {
        $client = new Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope(Drive::DRIVE);
        $driveService = new Drive($client);
        $realFileId = readline("Enter File Id: ");
        $fileId = '1ZdR3L3qP4Bkq8noWLJHSr_iBau0DNT4Kli4SxNc2YEo';
        $fileId = $realFileId;
        $response = $driveService->files->export($fileId, 'application/pdf', array(
            'alt' => 'media'));
        $content = $response->getBody()->getContents();
        return $content;

    }  catch(Exception $e) {
         echo "Error Message: ".$e;
    }

}

.СЕТЬ

drive/snippets/drive_v3/DriveV3Snippets/ExportPdf.cs
using Google.Apis.Auth.OAuth2;
using Google.Apis.Download;
using Google.Apis.Drive.v3;
using Google.Apis.Services;

namespace DriveV3Snippets
{
    // Class to demonstrate use of Drive export pdf
    public class ExportPdf
    {
        /// <summary>
        /// Download a Document file in PDF format.
        /// </summary>
        /// <param name="fileId">Id of the file.</param>
        /// <returns>Byte array stream if successful, null otherwise</returns>
        public static MemoryStream DriveExportPdf(string fileId)
        {
            try
            {
                /* Load pre-authorized user credentials from the environment.
                 TODO(developer) - See https://developers.google.com/identity for 
                 guides on implementing OAuth2 for your application. */
                GoogleCredential credential = GoogleCredential.GetApplicationDefault()
                    .CreateScoped(DriveService.Scope.Drive);

                // Create Drive API service.
                var service = new DriveService(new BaseClientService.Initializer
                {
                    HttpClientInitializer = credential,
                    ApplicationName = "Drive API Snippets"
                });

                var request = service.Files.Export(fileId, "application/pdf");
                var stream = new MemoryStream();
                // Add a handler which will be notified on progress changes.
                // It will notify on each chunk download and when the
                // download is completed or failed.
                request.MediaDownloader.ProgressChanged +=
                    progress =>
                    {
                        switch (progress.Status)
                        {
                            case DownloadStatus.Downloading:
                            {
                                Console.WriteLine(progress.BytesDownloaded);
                                break;
                            }
                            case DownloadStatus.Completed:
                            {
                                Console.WriteLine("Download complete.");
                                break;
                            }
                            case DownloadStatus.Failed:
                            {
                                Console.WriteLine("Download failed.");
                                break;
                            }
                        }
                    };
                request.Download(stream);
                return stream;
            }
            catch (Exception e)
            {
                // TODO(developer) - handle error appropriately
                if (e is AggregateException)
                {
                    Console.WriteLine("Credential Not found");
                }
                else
                {
                    throw;
                }
            }
            return null;
        }
    }
}

локон

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.