首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用客户端进行可恢复上传到Google?

如何使用客户端进行可恢复上传到Google?
EN

Stack Overflow用户
提问于 2012-09-14 10:28:39
回答 1查看 1.4K关注 0票数 0

我在将大型文件从Linux上传到GDrive时遇到问题(使用Grive,它不提供恢复,甚至不监视更大的上传)。

所以我开始尝试使用来编写一个小脚本来完成这个任务。

当Google驱动文档讨论Resumableupads-https://developers.google.com/drive/manage-uploads#resumable时,我试图使用google实现可恢复上传,并找到了Google::APIClient::ResumableUpload类。

示例对于理解这个rubyish API的工作原理非常有用,但是示例不涉及Resumable上载的问题。

Google::APIClient::ResumableUploadment是否用于文档正在讨论的可恢复上载,或者更确切地说是由这个Ruby提供的一个传输类?

当我调用或执行Google::APIClient::ResumableUpload构造函数时,它会消耗我得到的Google::APIClient::Result!在Google::APIClient实例上。

据我所知,execute方法只适用于Google方法,这些方法暴露在Discovery (如drive.files.insert)中。

不幸的是,可还原的上传与以下URI相关联:

https://www.googleapis.com/upload/drive/v2/files?uploadType=resumable

而且似乎还没有成为发现的一部分,也没有集成到“更干净”的URI方案中(为什么是upload/drive而不是drive/upload?)。

是否有可能对这个API使用Google::APIClient执行方法,以便将它与Google::APIClient::ResumableUpload代码结合起来--我是否必须自己实现可恢复上传(例如,通过使用em-http-request)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-02 00:18:07

有关基础知识,请参阅files.insert示例。在这个例子中,它使用多部分,但是切换到可恢复是相当简单的。通常需要将uploadType参数更改为“可恢复”。insert/update的结果将包含对上传器的引用,而不是用来发送内容/检查是否完成。

代码语言:javascript
复制
media = Google::APIClient::UploadIO.new(file_name, mime_type)
result = client.execute(
  :api_method => drive.files.insert,
  :body_object => file,
  :media => media,
  :parameters => {
    'uploadType' => 'resumable',
    'alt' => 'json'})

# Send content
result.resumable_upload.send_all(client)

在即将发布的客户端库测试版(现在是:)中,这种情况会略有改变,因此不管协议如何,上传工作都会更加一致。在大多数情况下,调用execute()就足够了,它将尝试上传文件。但现有的方法仍然有效。你也可以通过打电话来获得简历:

代码语言:javascript
复制
if !result.resumable_upload.complete?
   client.execute(result.resumable_upload) # Continue sending... 
end

示例没有显示错误处理,但是可以检查result.resumable_upload.complete吗?还是.expired?检查状态。不完整的可恢复上传在一段不活动期后到期(大约一个小时左右)。如果过期,则需要从头开始重新启动。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12422690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档