Загрузить файл на Google Диск с помощью Google API

На основе ссылки в Google API. Я хочу использовать многостраничную загрузку из-за большого размера файла. Но в этом есть много вещей, которых я не понимаю. Пожалуйста, продвиньтесь.

На основе документации Google API, чтобы использовать простую загрузку

  POST https://www.googleapis.com/upload/drive /v3/files? uploadType = media  

Я пробую, как показано ниже, но это не работает

  https: //www.googleapis.com/upload/drive/v3/C:UsersRNKP74DesktopFull_XML.zip?uploadType=media

Из ссылки Google REST отображается приведенный ниже пример, как это запустить?

  POST/upload/drive/v3/files? uploadType = multipart HTTP/1.1Host: www.googleapis.comAuthorization: Bearer your_auth_tokenContent  -Тип: составные/связанные;  border = foo_bar_bazContent-Length: number_of_bytes_in_entire_request_body - foo_bar_bazContent-Type: application/json;  charset = UTF-8 {"name": "My File"} - foo_bar_bazContent-Type: image/jpegJPEG data - foo_bar_baz--  

Используйте Files: insert Этот метод поддерживает URI/upload и принимает загруженные медиафайлы. Официальная документация Google содержит примеры.

Сначала отправьте POST метаданные нового файла в конечную точку Диска. Он должен быть в виде объекта JSON файлового ресурса:

  POST/drive/v2/files HTTP/1.1Host: www.googleapis.com Авторизация: Bearer  ... {"title": "file_name.extension", "mimeType": "mime/type", "description": "Материал о файле"}  

Тело ответа будет JSON-представлением вновь созданного файлового ресурса. Это будет выглядеть так:

  {"kind": "диск # файл", "id": строка, "etag": etag, "selfLink": строка, "title  ":" имя_файла "," mimeType ":" mime/тип "," описание ":" Информация о файле "..." downloadUrl ": строка, ...}  

Это подтверждение того, что запись файла была создана. Теперь вам нужно загрузить контент. Для этого вам нужно взять идентификатор файла, указанный в атрибуте id JSON в приведенном выше ответе, и ПОСТАВИТЬ содержимое фактического файла в конечную точку загрузки с авторизованным запросом OAuth 2.0. Он должен выглядеть так:

  PUT/upload/drive/v2/files/{id}? UploadType = media HTTP/1.1Host: www.googleapis.comAuthorization: Bearer  Content-Type: mime/type   

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



Загрузить данные файла

Drive API позволяет загружать данные файла при создании или обновлении File . Для получения информации о том, как создать файл только для метаданных, обратитесь к разделу Создание файлов.

Вы можете выполнять три типа загрузки:

  • Простая загрузка ( uploadType = media ). Используйте этот тип загрузки, чтобы быстро перенести небольшой медиафайл (5 МБ или меньше) без предоставления метаданных. Чтобы выполнить простую загрузку, обратитесь к разделу Выполнение простой загрузки.

  • Многокомпонентная загрузка ( uploadType = multipart ). Используйте этот тип загрузки для быстрой передачи небольшого файла (5 МБ или меньше) и метаданных, описывающих файл, в виде одного запроса. Чтобы выполнить составную загрузку, см. Раздел Выполнение составной загрузки.

  • Возобновляемая загрузка ( uploadType = resumable ). Используйте этот тип загрузки для файлов большого размера (более 5 МБ) и при высокой вероятности прерывания работы сети, например при создании файла из мобильного приложения. Возобновляемые загрузки также являются хорошим выбором для большинства приложений, поскольку они также работают с небольшими файлами при минимальной стоимости одного дополнительного HTTP-запроса на загрузку. Чтобы выполнить возобновляемую загрузку, обратитесь к разделу Выполнение возобновляемой загрузки.

Клиентские библиотеки Google API реализуют по крайней мере один из типов загрузки. См. Документацию по клиентской библиотеке. для получения дополнительных сведений о том, как использовать каждый из типов.

Выполните простую загрузку

Чтобы выполнить простую загрузку, используйте методfiles.create с uploadType = media .

Ниже показано, как выполнить простую загрузку:

Когда вы выполняете простую загрузку, создаются базовые метаданные, а некоторые атрибуты выводятся из файла, например, MIME type или modifiedTime . Вы можете использовать простую загрузку в тех случаях, когда у вас есть небольшие файлы и метаданные файлов не важны.

Выполнение составной загрузки

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

Для выполнения многокомпонентной загрузки используйте метод files.create с uploadType = multipart . Ниже показано, как выполнить составную загрузку:

При создании файлов файлы должны указывать расширение файла в поле name . Например, при создании файла фотографии в формате JPEG вы можете указать в метаданных что-то вроде "name": "photo.jpg" . Последующие вызовы files.get возвращают доступное только для чтения свойство fileExtension , содержащее расширение, изначально указанное в поле name .

Perform возобновляемая загрузка

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

Возобновляемые загрузки полезны, когда размеры ваших файлов могут сильно меняться или когда есть — фиксированный лимит времени для запросов (фоновые задачи мобильной ОС и определенные запросы AppEngine). Вы также можете использовать resumableuploads в ситуациях, когда вы хотите показать индикатор выполнения загрузки.

Возобновляемая загрузка состоит из трех этапов высокого уровня:

  1. Отправьте начальный запрос и получите URI возобновляемого сеанса.
  2. Загрузите данные и отслеживайте состояние загрузки.
  3. (необязательно) Если загрузка прервана, возобновите загрузку.

Отправьте начальный запрос

Чтобы начать загрузку возобновляемой информации, используйте метод files.create с uploadType = resumable .

Загрузите содержимое

Есть два способа загрузить файл с возобновляемым сеансом:

  • Загрузить содержимое одним запросом. Используйте этот подход, когда файл может быть загружен за один запрос, если нет фиксированного ограничения по времени для любого отдельного запроса или вам не нужно отображать индикатор выполнения загрузки. Этот подход обычно лучше всего, потому что он требует меньшего количества запросов и результатов. с большей производительностью.
  • Загружайте содержимое несколькими блоками. Используйте этот подход, если вам нужно уменьшить объем данных, передаваемых в одном запросе. Вам может потребоваться уменьшить количество передаваемых данных, когда существует фиксированный временной лимит для индивидуальных запросов, как это может иметь место для определенных классов запросов Google App Engine. Этот подход также полезен, если вам нужно предоставить индивидуальный индикатор для отображения прогресса загрузки.

Возобновить прерванную загрузку

Если запрос загрузки прерывается до ответа, или если вы получили сообщение 503 Служба недоступна , затем вам нужно возобновить прерванную загрузку.

Обработка ошибок загрузки мультимедиа

При загрузке мультимедиа следуйте этим рекомендациям для обработки ошибок:

  • Для ошибок 5xx возобновите или повторите загрузку, которая не удалась из-за разрыва соединения. Дополнительные сведения об обработке ошибок 5xx см. В разделе Устранение ошибок.
  • Для ошибок ограничения скорости 403 повторите загрузку. Для получения дополнительной информации об обработке ошибок ограничения скорости 403 обратитесь к разделу Устранение ошибки 403: превышено ограничение скорости
  • Для любых ошибок 4xx (включая 403) во время возобновляемой загрузки перезапустите загрузку. Эти ошибки указывают на то, что сеанс загрузки истек, и его необходимо перезапустить, запросив новый URI сеанса. Сеансы загрузки также заканчиваются после 1 недели бездействия.

Когда вы создаете файл на Google Диске, вы можете преобразовать файл в тип файла Google Workspace, такой как GoogleDoc или Sheet . Например, вы хотите преобразовать документ из вашего любимого текстового редактора в Google Docto, чтобы воспользоваться функциями Google Doc..

Чтобы преобразовать файл в определенный тип файла Google Workspace, укажите Google Workspace mimeType при создании файла. Ниже показано, как преобразовать файл CSV в файл Google. Лист рабочей области:

Чтобы узнать, доступно ли преобразование, проверьте О массиве ресурсов importFormats до создания файла. Поддерживаемые преобразования доступны динамически в этом массиве. Вот некоторые распространенные форматы импорта:

От К
Microsoft Word, OpenDocument Text, HTML, RTF, обычный текст Google Docs
Microsoft Excel, OpenDocument Spreadsheet , CSV, TSV, простой текст Google Sheets
Microsoft Powerpoint, презентация OpenDocument Google Slides
JPEG, PNG, GIF, BMP, PDF Google Docs (встраивает изображение в документ)
обычный текст (специальный тип MIME), JSON Скрипт Google Apps

Когда вы загружаете и конвертируете медиафайлы во время запроса update в Google Doc, Sheet или Slide, все содержимое документа заменяется.

Когда вы конвертируете изображение в документ Google, Drive использует оптическое распознавание символов (OCR) для преобразования изображения в текст. Вы можете улучшить качество алгоритма OCR, указав применимый языковой код BCP 47 в параметре ocrLanguage . Извлеченный текст появляется в документации Google Docs вместе со встроенным изображением.

Использование предварительно созданного идентификатора для загрузки файлов

Drive API позволяет получить список предварительно созданных файлов ID используется для загрузки и создания ресурсов. Запросы на загрузку и создание файлов могут использовать эти предварительно сгенерированные идентификаторы. Задайте поле id в метаданных файла.

Чтобы создать предварительно сгенерированные идентификаторы, вызовите file.generateIds с количеством создаваемых идентификаторов.

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

Определить индексируемый текст для файлов неизвестных типов

Пользователи могут использовать пользовательский интерфейс Диска для поиска содержимого документа. Вы также можете использовать файлfile.list и поле fullText для поиска контента из вашего приложения. Для получения дополнительной информации о поиске файлов см. Поиск файлов и папок

Чтобы разрешить поиск содержимого, Диск автоматически индексирует содержимое документа, когда распознает тип файла. Распознаваемые типы файлов включают текстовые документы, PDF-файлы, изображения с текстом и другие распространенные типы. Если ваше приложение сохраняет файлы, которые не распознаются Driveo, вы должны включить текст в поле contentHints.indexableText файла.. При указании indexableText имейте в виду:

  • Убедитесь, что вы зафиксировали ключевые термины и понятия, которые, как вы ожидаете, пользователь будет искать.
  • Максимальный размер для contentHints.indexableText составляет 128 КБ.
  • Вам не нужно располагать текст в порядке важности; индексатор определяет важность.
  • Индексируемый текст должен обновляться вашим приложением при каждом сохранении.
  • Убедитесь, что любой indexableText действительно появляется в содержимое или метаданные файла. Не пытайтесь заставить файл появляться в результатах поиска, включая термины, которых нет в содержании или метаданных. Пользователи не любят выполнять поиск, который приводит к появлению файлов, содержащих нерелевантный контент.

‘photo.jpg’)); $ content = file_get_contents (‘files/photo.jpg’); $ file = $ driveService-> files-> create ($ fileMetadata, array (‘data’ = > $ content, ‘mimeType’ => ‘image/jpeg’, ‘uploadType’ => ‘multipart’, ‘fields’ => ‘id’)); printf («Идентификатор файла:% s n», $ file- > id); * {.NET} var fileMetadata = new File () {Name = «photo.jpg»}; запрос FilesResource.CreateMediaUpload; используя (var stream = new System.IO.FileStream («files/photo.jpg» , System.IO.FileMode.Open)) {запрос = driveService.Files.Create (fileMetadata, stream, «изображение/JPEG»); request.Fields = «id»; request.Upload ();} var file = request.ResponseBody; Console.WriteLine («Идентификатор файла:» + file.Id); * {Ruby} file_metadata = {name: ‘photo.jpg’} file = drive_service.create_file ( file_metadata, fields: ‘id’, upload_source: ‘files/photo.jpg’, content_type: ‘image/jpeg’) помещает «File Id: # {file.id}» file_metadata = {} file = drive_service.update_file (id, file_metadata, fields: ‘id’, upload_source: ‘files/photo.jpg’, content_type: ‘image/jpeg’) помещает «Идентификатор файла: # {file.id}» * {Objective-C} NSData * fileData = [[ NSFileManager defaultManager] contentsAtPath: @ «files/photo.jpg»]; GTLRDrive_File * metadata = [GTLRDrive_File объект]; metadata.name = @ «photo.jpg»; GTLRUploadParameters * uploadParameters = [GTLRUploadParameters: @GTLRUploadParameters «Параметры изображения/файла jpeg «]; uploadParameters.shouldUploadWithSingleRequest = TRUE; GTLRDriveQuery_FilesCreate * query = [GTLRDriveQuery_FilesCreate queryWithObject: metadata uploadParameters: uploadParameters]; query.fields = @» id «execute; [driveService: nHandler: ^ (GTLRServiceTicket * ticket, GTLRDrive_File * файл, NSError * error) {if (error == nil) {NSLog (@ «File ID% @», file. идентификатор); } else {NSLog (@ «Произошла ошибка:% @», ошибка); }}]; * {PHP} $ fileMetadata = new Google_Service_Drive_DriveFile (array (‘name’ => ‘My Report’, ‘mimeType’ => ‘application/vnd.google-apps.spreadsheet’)); $ content = file_get_contents ( ‘files/report.csv’); $ file = $ driveService-> files-> create ($ fileMetadata, array (‘data’ => $ content, ‘mimeType’ => ‘text/csv’, ‘uploadType’ =>). ‘multipart’, ‘fields’ => ‘id’)); printf («Идентификатор файла:% s n», $ file-> id); * {.NET} var fileMetadata = new File () {Name = » Мой отчет «, MimeType =» application/vnd.google-apps.spreadsheet «}; запрос FilesResource.CreateMediaUpload; используя (var stream = new System.IO.FileStream (» files/report.csv «, System.IO.FileMode. Открыть)) {request = driveService.Files.Create (fileMetadata, stream, «текст/csv»); request.Fields = «id»; request.Upload ();} var file = request.ResponseBody; Console.WriteLine («Идентификатор файла:» + file.Id); * {Ruby} file_metadata = {name: ‘My Report’, mime_type: ‘application/vnd. google-apps.spreadsheet ‘} file = drive_service.create_file (file_metadata, fields:’ id ‘, upload_source:’ files/report.csv ‘, content_type:’ text/csv ‘) помещает «Идентификатор файла: # {file.id} «* {Objective-C} NSData * fileData = [[NSFileManager defaultManager] contentsAtPath: @» files/report.csv «]; GTLRDrive_File * metadata = [GTLRDrive_File object]; metadata.name = @» My Report «; metadata.mimeType = @ «application/vnd.google-apps.spreadsheet»; GTLRUploadParameters * uploadParameters = [GTLRUploadParameters: uploadParametersWithData: fileData MIMEType: @ «text/csv»]; uploadParameters.shouldUploadWithSingleRequest = TRUE; GTLRDriveQuestCrequest = TRUE; GTLRDriveQiles uploadParameters]; query.fields = @ «id»; [driveService executeQuery: обработчик завершения запроса: ^ (GTLRServiceTicket * ticket, GTLRDrive_File * fi le, NSError * error) {if (error == nil) {NSLog (@ «File ID% @», file. идентификатор); } else {NSLog (@ «Произошла ошибка:% @», ошибка); }}]; ->

[{«type»: «thumb-down», «id»: «missingTheInformationINeed», «label»: «Информация отсутствует. I need «}, {» type «:» thumb-down «,» id «:» tooComplicatedTooManySteps «,» label «:» Слишком сложно/слишком много шагов «}, {» type «:» thumb-down «,» id «:» outOfDate «,» label «:» Неактуально «}, {» type «:» thumb-down «,» id «:» samplesCodeIssue «,» label «:» Образцы/Проблема с кодом «}, {» type «:» thumb-down «,» id «:» otherDown «,» label «:» Other «}] [{» type «:» thumb-up «,» id » : «easyToUnderstand», «label»: «Легко понять»}, {«type»: «thumb-up», «id»: «resolMyProblem», «label»: «Моя проблема решена»}, {«type» : «thumb-up», «id»: «otherUp», «label»: «Other»}]

Оцените статью
clickpad.ru
Добавить комментарий