Ruby:使用元数据将Rest-client多部分上传到Google驱动器

时间:2016-03-22 05:53:54

标签: ruby rest drive

我正在尝试使用Rest调用将文件上传到google驱动器的API。 API表示如果要为文件命名必须传递元数据,并且应将其作为multipart上传。

我收到了一条错误请求'错误。我认为这可能是由于使用Rest客户端有多种内容类型。

RestClient::Request.execute(
                               :method => "post",
                               :url => "https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart",
                               :headers => {:Authorization => "Bearer #{access_token}", :content_type => 'multipart/related'},
                               :payload => {:metadata => "{'title' : 'testing'}", :file => File.new(file, 'rb'), :multipart => true}
                           )

任何帮助都会很棒!谢谢!

1 个答案:

答案 0 :(得分:0)

我相信,使用给定的库(rest-client),这是不可能的,因为根据Google的要求,需要订购多部件,并且每个部件必须具有正确的mime类型。

所以,我会说,你使用的语法最接近正确,但不幸的是,宝宝似乎不支持这个评论时的[1]。

如果您仍在寻找解决方案,我发现最接近的是直接挖掘Google的API客户端库,他们在hurley [2]的帮助下手工制作多部分请求。

您可以查看源代码以获取一些想法。[3]

希望这有帮助。

[1] https://github.com/rest-client/rest-client/pull/222

[2] https://github.com/lostisland/hurley

[3] https://github.com/google/google-api-ruby-client/blob/d2e51b4e7d4cb5a18cb08b2aed9c0d8ffff14b22/lib/google/apis/core/multipart.rb