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

3

我需要在我的网站上上传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

1个回答

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" 模式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接