我想在浏览文件时将文件临时保存在公用文件夹中。
那是当浏览文件时首先保存在公共文件夹中然后我将使用roo gem
读取此文件,所以请帮助我如何继续。
答案 0 :(得分:2)
例如像这样
表格上传文件:
<%= form_tag some_path, :multipart => true do %>
<%= file_field_tag :my_file %>
<%= submit_tag 'Upload' %>
<% end %>
在某处控制器商店上传文件:
file = params[:my_file].read
filename = params[:my_file].original_filename
File.open(File.join(Rails.root, 'path', 'to', 'dir', filename), 'wb') { |f| f.write file }
然后在必要时使用Roo处理文件并在之后删除:
path = File.join Rails.root, 'path', 'to', 'dir', filename
rows = Roo::Spreadsheet.open path
for i in 0..rows.last_row do
...
end
File.delete path
你必须在某处存储文件名。或者处理此目录中的所有文件。例如所有xlsx文件:
Dir.glob(File.join Rails.root, 'path', 'to', 'dir', '*.xlsx').each do |path|
rows = Roo::Spreadsheet.open path
...
end
实际上你必须在尝试存储之前检查文件是否上传,如果你正在处理文件,请检查文件是否存在,就像在第一个例子中一样。但是为了简单起见,我们跳过了它。