Создание файлов и управление ими

В этом руководстве объясняется, как создавать и управлять файлами в Google Drive с помощью API Google Drive.

Создать файл

Чтобы создать файл в Google Диск, не содержащий метаданных или содержимого, используйте метод create ресурса files без параметров.

При создании файла метод возвращает ресурс типа files . Файлу присваивается kind drive.file , id , name "Untitled" и mimeType application/octet-stream . uploadType помечен как обязательный, но по умолчанию имеет значение media , поэтому указывать его необязательно.

Для получения дополнительной информации об ограничениях на количество файлов в Google Диске см. раздел «Ограничения на количество файлов и папок» .

Используйте параметр fields.

Если вы хотите указать поля, которые должны быть возвращены в ответе, вы можете задать системный параметр fields с помощью любого метода ресурса files . Если вы опустите параметр fields , сервер вернет набор полей по умолчанию, специфичных для данного метода. Например, метод list возвращает только поля kind , id , name , mimeType и resourceKey для каждого файла. Чтобы вернуть другие поля, см. раздел «Возврат специфических полей» .

Право собственности на файл

При создании файла с помощью API Google Диска права собственности зависят от учетных данных, используемых приложением, следующим образом:

  • Учетная запись пользователя (OAuth 2.0) : Если приложение проходит аутентификацию от имени пользователя, этот пользователь становится владельцем файла. Затем файл размещается в папке «Мой диск» или в указанной папке . Он расходует выделенное ему место в хранилище.

  • Учетная запись службы : Если приложение проходит аутентификацию с использованием учетной записи службы, то эта учетная запись является владельцем файла. Затем файл размещается в выделенном для учетной записи службы хранилище на Диске. Файлы не отображаются в других учетных записях хранилища на Диске, если они не предоставлены в явном доступе. Если учетная запись службы удалена, все принадлежащие ей файлы немедленно удаляются.

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

Дополнительную информацию о правах доступа к файлам см. в разделе «Общий доступ к файлам, папкам и дискам» .

Сгенерируйте идентификаторы для использования с вашими файлами.

Метод generateIds ресурса files позволяет предварительно генерировать уникальные идентификаторы файлов, которые можно использовать при создании или копировании файлов и папок в Google Диск. Это может быть полезно, когда вам нужно контролировать идентификаторы файлов из вашего приложения, а не позволять Google Диск назначать их автоматически.

Количество генерируемых идентификаторов можно задать с помощью параметра запроса count . Если count не задан, по умолчанию возвращается 10 идентификаторов. Максимальное количество запрашиваемых идентификаторов ограничено 1000.

Вы также можете указать space , в котором можно использовать идентификаторы, и type предметов, для которых эти идентификаторы могут использоваться.

После генерации идентификатора его можно передать методу create или copy через поле id . Это гарантирует, что созданный или скопированный файл будет использовать предопределенный идентификатор.

Если файл успешно создан или скопирован, последующие попытки возвращают HTTP-код состояния 409 Conflict , и дубликаты файлов не создаются.

Обратите внимание, что предварительно сгенерированные идентификаторы не поддерживаются для создания файлов Google Workspace, за исключением MIME-типов application/vnd.google-apps.drive-sdk и application/vnd.google-apps.folder . Аналогично, загрузка файлов, ссылающихся на преобразование в формат файла Google Workspace, не поддерживается.

Создавайте файлы, содержащие только метаданные.

Файлы, содержащие только метаданные, не имеют содержимого. Метаданные — это данные (такие как name , mimeType и createdTime ), описывающие файл. Поля, такие как name , не зависят от пользователя и отображаются одинаково для каждого пользователя, тогда как поля, такие как viewedByMeTime содержат значения, специфичные для пользователя.

Примером файла, содержащего только метаданные, является папка с MIME-типом application/vnd.google-apps.folder . Дополнительную информацию см. в разделе «Создание и заполнение папок» . Другим примером является ярлык, указывающий на другой файл на Google Диске с MIME-типом application/vnd.google-apps.shortcut . Дополнительную информацию см. в разделе «Создание ярлыка для файла на Google Диске» .

Управление миниатюрами изображений

Миниатюры помогают пользователям идентифицировать файлы в Google Диске. Google Диск может автоматически создавать миниатюры для распространенных типов файлов, или вы можете предоставить изображение миниатюры, созданное вашим приложением. Для получения дополнительной информации см. раздел «Загрузка миниатюр» .

Скопировать существующий файл

Для копирования файла и применения запрошенных изменений используйте метод copy ресурса files . Для поиска идентификатора fileId для копирования используйте метод list .

Вы можете применять обновления с помощью семантики патчей, то есть вносить частичные изменения в ресурс. Необходимо явно указать поля, которые вы собираетесь изменить, в вашем запросе. Любые поля, не включенные в запрос, сохраняют свои существующие значения. Для получения дополнительной информации см. раздел «Работа с частично измененными ресурсами» .

Вы можете предварительно задать идентификатор скопированного файла, используя метод generateIds . Для получения дополнительной информации см. раздел «Генерация идентификаторов для использования с вашими файлами» .

Обратите внимание, что для авторизации вызова необходимо использовать соответствующую область действия API Google Drive . Дополнительную информацию об областях действия API Google Drive см. в разделе «Выбор областей действия API Google Drive» .

Ограничения и соображения

При подготовке к копированию файлов обратите внимание на следующие ограничения и моменты:

  • Права доступа :

    • Объект DownloadRestrictionsMetadata ресурса files определяет, кто может копировать файл. Дополнительную информацию см. в разделе «Запрет пользователям загружать, распечатывать или копировать ваш файл» .
    • Поле capabilities.canCopy определяет, может ли пользователь копировать файл. Дополнительную информацию см. в разделе «Понимание возможностей файлов» .
    • Пользователь, создавший копию, является владельцем скопированного файла. Никакие другие параметры общего доступа из исходного файла не копируются. Если копия создана в общей папке, она наследует права доступа этой папки.
    • Владельцы скопированного файла могут измениться, и копия может не унаследовать настройки общего доступа исходного файла. Возможно, потребуется сбросить эти настройки.
  • Управление файлами :

    • Некоторые файлы, например, ярлыки сторонних разработчиков , невозможно скопировать.
    • Файл можно скопировать только в одну родительскую папку. Указание нескольких родительских папок не поддерживается. Если поле parents не указано, файл наследует все доступные родительские папки от исходного файла.
    • Хотя папка является типом файла, скопировать папку нельзя. Вместо этого создайте целевую папку и установите поле parents для существующих файлов в значение целевой папки. После этого вы сможете удалить исходную папку.
    • Если не указано новое имя файла, метод copy создаст файл с тем же именем, что и исходный.
    • Чрезмерное использование функции copy может привести к превышению лимитов квоты API Google Drive. Для получения дополнительной информации см. раздел «Лимиты использования» .

Вот несколько дальнейших шагов, которые вы можете попробовать: