我需要在我的网站上上传Word和Excel文件。
我创建了一个上传表单,上传文件并以以下方式保存:
f = File.new("public/files/#{user.id.to_s}/filename", "w+")
f.write params[:file].read
f.close
Word和Excel文件必须保存为二进制数据。
可悲的是,Filemode“b”只适用于Windows,而我使用的是Linux。
该怎么办?
祝好,
Joern
我需要在我的网站上上传Word和Excel文件。
我创建了一个上传表单,上传文件并以以下方式保存:
f = File.new("public/files/#{user.id.to_s}/filename", "w+")
f.write params[:file].read
f.close
Word和Excel文件必须保存为二进制数据。
可悲的是,Filemode“b”只适用于Windows,而我使用的是Linux。
该怎么办?
祝好,
Joern
二进制文件模式 "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" 模式。