无需知道尺寸即可上传到Google云端硬盘

时间:2014-07-25 22:40:00

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

我正在尝试通过API将大型(~512 MB)文件上传到Google云端硬盘。

我更倾向于使用Java SDK来帮助OAuth。

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


Java SDK

我查看了Java SDK,但我认为没办法去做。 com.google.api.client.http.AbstractInputStreamContent要求实施支持getLength()


HTTP

我在https://developers.google.com/drive/web/manage-uploads

上看到了对分块转移的引用(针对这种情况而定)
  

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

     
      
  • 如果连接失败,文件足够小,可以完全上传。   没有要发送的元数据。如果您计划在单独的请求中发送此资源的元数据,或者没有支持或可用的元数据,则可能会出现这种情况。   要使用简单上传,请对方法&上传URI发出POST或PUT请求,并添加查询参数uploadType = media。例如:

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

  •   
     

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

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

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

  •   

但它只能用于"小"文件。如果它只用于小文件,它似乎与分块传输编码的目的背道而驰。


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

1 个答案:

答案 0 :(得分:1)

Resumable uploads

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

深入了解Resumable上传,你应该设置好。