【问题标题】:Upload to Google Drive without knowing size在不知道大小的情况下上传到 Google Drive
【发布时间】:2014-09-17 21:19:29
【问题描述】:

我正在尝试通过 API 将一个大 (~512 MB) 文件上传到 Google Drive。

我强烈希望使用 Java SDK 来帮助 OAuth。

我正在生成此文件并流式传输到云端硬盘,而不将其存储在任何地方。特别是,这意味着我在发送之前不知道文件的长度。


Java SDK

我查看了 Java SDK,但我认为没有办法。 com.google.api.client.http.AbstractInputStreamContent 需要实现以支持 getLength()


HTTP

我在https://developers.google.com/drive/web/manage-uploads 上看到了对分块传输的引用(正是针对这种情况制作的)

上传文件最直接的方法是发出一个简单的上传请求。在以下情况下,此选项是一个不错的选择:

  • 文件足够小,可以在连接失败时再次完整上传。 没有要发送的元数据。如果您计划在单独的请求中发送此资源的元数据,或者不支持或不可用元数据,这可能是正确的。 要使用简单上传,请向方法的 /upload URI 发出 POST 或 PUT 请求,并添加查询参数 uploadType=media。例如:

  • 发布https://www.googleapis.com/upload/drive/v2/files?uploadType=media

发出简单上传请求时使用的 HTTP 标头包括:

  • 内容类型。设置为 API 参考中指定的方法可接受的上传媒体数据类型之一。

  • 内容长度。设置为您要上传的字节数。如果您使用分块传输编码,则不需要。

但它只应该用于“小”文件。如果它只用于小文件,它似乎与分块传输编码的点背道而驰。


我可以在不提前知道大小的情况下将大文件发送到 Google 云端硬盘吗?

【问题讨论】:

    标签: java file-upload chunked-encoding google-drive-api


    【解决方案1】:

    Resumable uploads

    "X-Upload-Content-Length.设置为后续请求中要传输的上传数据的字节数。如果本次请求时长度未知,可以省略这个标题。”

    深入研究可恢复的上传,您应该已经准备好了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      相关资源
      最近更新 更多