Ограничение размера файла Google Диска

Я пытаюсь загрузить файлы на Google Диск с помощью REST API (возобновляемая загрузка). Все выглядит хорошо (XMLHttpRequest триггеры onprogress и onload события), но после этого (сбой onload) сбой запроса PUT Google Диска с 500 Internal Server Error. Файл не отображается в папке Google Диска. Ошибка 500 входит в xhr.onload, а не в xhr.onerror.

То же самое, если я пытаюсь загрузить этот файл через интерфейс Google Диска. Это случается иногда, и у меня нет среды со 100% воспроизведением.

Тип файла Adobe.DNG или Canon.CR2 и размер файла ~ 28 МБ.

Что я делаю неправильно? Известно ли это ошибка или ограничения файловых типов или файлов?

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

UPD: Я использую этот загрузчик, как есть, только с косметическими изменениями.

Ответ 1

OK. Я понял.

Файлы успешно загружаются с помощью Content-Type == "application/octet-stream" . Похож на ошибку на стороне GoogleDrive с файлами mime-type'd. В этом случае мои сырые файлы (DNG, CR2, NEF и т.д.) Хранятся в GoogleDrive с неправильным типом mime (в результате нет предварительного просмотра этих файлов).

Итак, я больше не могу фильтровать файлы с помощью mime-type.

Query string = (mimeType = 'image/x-adobe-dng' or mimeType = 'image/x-canon-cr2' or mimeType = 'image/x-nikon-nef').

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

Query string = (title contains '.dng' or title contains '.cr2' or title contains '.nef').

Поэтому мне нужно отфильтровать мои файлы не с помощью mime-типа или по заголовку, а с помощью ключевого слова fullText.

Query string = (fullText contains '.dng' or fullText contains '.cr2' or fullText contains '.nef').

Заключение:

  • Загружатель GoogleDrive проверяет Content-Type, даже если для параметра конверсии установлено значение false.
  • GoogleDrive время от времени не работает с этим конвертированием.
  • Uploader отлично работает с Content-Type == 'application/octet-stream'.
  • Заголовок строки запроса GoogleDrive не содержит расширение файла, но в ответах заголовки имеют расширение.
  • ключевое слово запроса GoogleDrive fullText содержит имя файла с расширением (mb не очень быстро для текстовых файлов).
  • Для проверки вашего запроса вы можете использовать этот инструмент https://developers.google.com/drive/v2/reference/files/list в конце страницы.
  • GoogleDrive API время от времени вылетает со статусом HTTP 500 Внутренняя ошибка сервера:

{"error":{"errors":[{"domain":"global","reason":"backendError","message":"Backend Error"}],"code": 500,"message": "Backend Error"}}

Ответ 2

Я думаю, что это будет связано с необработанными файлами фотографий, потому что DRIVE пытается конвертировать их в JPG, как это сделано в Google+, если вы не указали конвертировать = ложь. Вы должны указать в своем API загрузки, чтобы не конвертировать эти файлы.

В этом втором сообщении говорится, что он позволит вам просмотреть файл до 25 МБ, это ограничение по размеру может быть связано с вашими проблемами. Возможно, вы можете попробовать загрузить еще одну фотографию с меньшим размером, чтобы гарантировать это ограничение.

Ответ 3

Я также видел эту ошибку 500 с аналитикой google несколько раз и ее нормальность из-за того, что сервер занят. Если я немного подожду и попробую еще раз, это сработает. Попробуйте прочитать это https://developers.google.com/drive/handle-errors#implementing_exponential_backoff Это сработало с API Google Analtyics, и к тому времени, когда он дойдет до шага 6, он снова получит доступ. Не пробовал это с Google Drive, но потом я не пытался загрузить файл размером 25 м. Но я уверен, что это ваша проблема.