Google云端硬盘上传文件大小限制

时间:2013-11-04 13:44:41

标签: javascript api rest google-drive-api

我试图通过REST API(可恢复上传)将我的文件上传到Google云端硬盘。 一切看起来都不错(XMLHttpRequest触发onprogressonload个事件),但在此之后(onload触发)Google Drive PUT请求失败并显示500 Internal Server Error。文件未显示在我的Google云端硬盘文件夹中。错误500来自xhr.onload,而不是xhr.onerror

如果我尝试通过Google云端硬盘界面上传该文件,也一样。它有时会发生,我没有100%复制的环境。

文件类型 Adob​​e .DNG 佳能.CR2 和文件大小 ~28MB

我做错了什么?是知道文件类型或文件的bug还是限制?

可能的原因:文件大小限制,文件类型限制,或者我的文件上传时我的令牌可能会过期?

UPD:我正在使用this uploader,只是更改了外观。

3 个答案:

答案 0 :(得分:5)

行。我懂了。

使用 Content-Type ==“application / octet-stream”成功上传文件。使用mime类型的文件在GoogleDrive端看起来像bug。 在这种情况下,我的原始文件(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-type或者title,而是通过fullText关键字过滤我的文件。

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

结论:

  1. GoogleDrive上传器检查内容类型,即使转换选项设置为 false
  2. GoogleDrive经常使用转换
  3. 失败
  4. 上传器适用于 Content-Type =='application / octet-stream'
  5. GoogleDrive查询字符串关键字标题不包含文件扩展名,但在回复标题中有扩展名。
  6. GoogleDrive查询字符串关键字 fullText包含带扩展名的文件名(对于文本文件,它的速度不是很快)。
  7. 要测试您的请求,您可以在页面末尾使用此工具https://developers.google.com/drive/v2/reference/files/list
  8. GoogleDrive API不时崩溃,状态为 500内部服务器错误
  9. {"error":{"errors":[{"domain":"global","reason":"backendError","message":"Backend Error"}],"code": 500,"message": "Backend Error"}}

答案 1 :(得分:2)

我认为这与原始照片文件有关,因为DRIVE会像在Google+中一样尝试convert them to JPG,除非您指定convert = false。您应该在上传API中指定不转换该文件。

这第二篇帖子说它会允许你预览文件up to 25MB,这个大小限制可能与你的麻烦有关。也许你可以尝试上传另一张小于这个尺寸的照片,以确保它不是限制。

答案 2 :(得分:0)

由于服务器很忙,我还看了几次google analytics的500次错误及其正常情况。如果我稍等一下再试一次就行了。试着阅读https://developers.google.com/drive/handle-errors#implementing_exponential_backoff这与我使用Google Analtyics API一起工作,当它到达第6步时再次获得访问权限。没有尝试使用谷歌驱动器,但后来我没有尝试上传25米文件。但我打赌这是你的问题。