如何从StringIO的主体中提取上载的文件

时间:2013-10-10 09:56:08

标签: ruby-on-rails ruby typhoeus

我第一次尝试使用Typhoeus将文件上传到Rails应用程序,但我不知道如何将该文件转换为我可以使用的文件。

上传完成类似Typheous'示例:

Typhoeus.put(
  url,
  body: {
    title: "This should be the title",
    file: File.open(file_path, "r")
  }
)

在控制器中,request.body.string就是:

 "title=This%20should%20be%20the%20title&file=%5B%221-1381398552.zip%22%2C%20%22application%2Fzip%22%2C%20%22%2Fvagrant%2Fppc_reports%2Fspec%2Fdummy%2Ftmp%2F1381398547_qyforj%2F1-1381398552.zip%22%5D"

如何从正文中获取文件并将其另存为文件或临时文件以供使用?

2 个答案:

答案 0 :(得分:0)

你试过这个吗?我认为StringIO应该像文件一样。

contents = params[:file].read

之后你只需将它保存到另一个文件中。

File.open('/path/to/file', 'rw') do |f|
  f.write contents
end

答案 1 :(得分:0)

PUT默认为application/x-www-form-urlencoded(与POST不同),您必须设置它:

Typhoeus.put(
  url,
  body: {
    title: "This should be the title",
    file: File.open(file_path, "r")
  },
  headers: { "Content-Type" => "application/x-www-form-urlencoded" }
)