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
我正在尝试使用 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