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



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

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

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

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

遗憾的是,文件模式"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"模式。

最新更新