Google Drive多个文件下载

时间:2016-10-05 13:26:08

标签: google-drive-api

我们有一个客户端 - 服务器架构,它使用Google Drive在客户端和服务器之间共享文件,而无需实际发送它们。
客户端使用Google Drive API获取要与服务器共享的所有文件的文件ID列表。
然后,服务器使用适当的授权令牌下载文件 服务器响应时间对用户体验至关重要。

我们尝试了几种方法:
首先,我们使用了webContentLink。这一直有效,直到我们开始从客户端接收大文件。而不是获取文件'内容,我们得到一个警告"超过了谷歌可以扫描的最大尺寸"。我们找不到可用于跳过此检查的标头。
其次,我们使用alt = media query param切换到Google API资源网址。这样可行,但我们会点击API配额错误(超出用户速率限制)。由于这是服务器代码,因此它被识别为所有请求的单个用户。 然后我们添加了quotaUser param来代表每个请求所针对的用户。我们还有很多403回复。
此外,我们为失败的请求实现了指数退避。
我们还为成功请求添加了缓存。

我们目前的解决方案是两者的结合。尽可能使用webContentLink(似乎不会影响Google API配额)。如果响应不符合预期(即html,错误的大小等),我们会尝试使用Google API资源网址(指数退避)。
(大多数文件足够小,不超过扫描尺寸限制)

客户端和服务器都使用相同的OAuth 2.0客户端ID。

以下是我的问题:
1.是否可以跳过病毒扫描,以便可以使用webContentLink下载所有文件?
2.是否记录了病毒扫描的大小阈值?假设我们知道文件大小,我们就可以保存第一个请求的往返(使用webContentLink) 除了申请更高的配额外,还有什么我们可以做的吗?

1 个答案:

答案 0 :(得分:0)

  1. 是否可以跳过病毒扫描,以便可以使用webContentLink下载所有文件?
  2. 如果大于25MB,则无法使用webContentLink,但由于您使用的是授权请求,请使用{strong> alt=media files.get。应用适当的错误处理选项(使用指数退避完成)。下一步是检查您的代码是否已经过优化,然后检查并应用建议的优化后仍然收到错误403限制超出,申请更高配额的时间。

    1. 是否记录了病毒扫描的大小阈值?假设我们知道文件大小,那么我们可以保存第一个请求的往返(使用webContentLink)
    2. 要回答这个问题,您可以参考Google云端硬盘帮助论坛:How can I successfully download large files from google drive without network errors at the most end of the download

        

      只能扫描小于25 MB的文件以查找病毒。

      1. 除了申请更高的配额外,还有什么我们可以做的吗?
      2. 在申请更高的配额之前,您可以执行以下操作:

        完成所有优化后,唯一的选择是申请更高的配额限制。

        希望这有帮助!