Rails/Ruby:上传二进制文件并使用File-Object编写它

Joe*_*ann 3 ruby binary file-upload ruby-on-rails-3

我需要在我的网站上传Word和Excel文件.

我创建一个上传表单,上传文件并保存如下:

f = File.new("public/files/#{user.id.to_s}/filename", "w+")
f.write params[:file].read
f.close
Run Code Online (Sandbox Code Playgroud)

Word和Excel文件必须保存为二进制数据.

可悲的是,文件模式"b"仅适用于Windows,而且我在linux下.

该怎么办?

此致,

Joern

Ion*_*Br. 5

二进制文件模式"b"可能与任何关键字母(r,r +,w,w +,a,a +)一起出现,因此您可以这样做f = File.new("public/files/#{user.id.to_s}/filename", "w+b").

而"b"模式不仅适用于Windows.Ruby文档说"二进制文件模式(可能出现任何关键字母r,r +,w,w +,a,a +.在Windows上禁止EOL < - > CRLF转换.除非明确指定,否则将外部编码设置为ASCII-8BIT "并且没有说"b"仅适用于Windows.它只是告诉它在Windows/linux上的行结尾不同.所以你可以在linux和windows上使用"w + b"模式.