如何在rails上使用ruby编写收到的zip文件内容

时间:2014-12-21 14:05:16

标签: ruby-on-rails ruby encoding zip

我正在通过rails应用程序从磁盘读取一些zip文件并将其发送到另一个rails应用程序,因此在接收方,params [“file”]的值是

#<ActionDispatch::Http::UploadedFile:0x00000008d66bb0
 @content_type="application/zip",
 @headers=
  "Content-Disposition: form-data; name=\"file\"; filename=\"test.zip\"\r\nContent-Length: 2706\r\nContent-Type: application/zip\r\nContent-Transfer-Encoding: binary\r\n",
 @original_filename="test.zip",
 @tempfile=#<File:/tmp/RackMultipart20141221-3194-1cq6k5b>>

我想将这个压缩文件下载到接收器磁盘,所以我想我需要读取它的数据并写出来,所以我做了这个:

File.open("filepath", "w") do |f|
 f.write(params["file"].tempfile.read)
end

然而我收到错误消息

Encoding::UndefinedConversionError ("\xF4" from ASCII-8BIT to UTF-8)

我为这个编码问题尝试了几种解决方案,但都是徒劳的。

那么如何下载收到的zip文件呢? 谢谢

1 个答案:

答案 0 :(得分:1)

尝试:

File.open("filepath", "wb") do |f|
 f.write(params["file"].tempfile.read)
end