Ruby:Rest-client 分段上传到带有元数据的 Google 驱动器

Ruby: Rest-client multipart upload to Google drive with metadata

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

我收到“400 错误请求”错误。我认为这可能是由于使用 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}
                           )

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

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

所以,我想说,您使用的语法最接近正确,但不幸的是,gem 截至发表此评论时似乎不支持此 [1]。

如果您仍在寻找解决方案,我发现最接近的是直接挖掘 Google 的 API 客户端库,他们在赫利 [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