1

我想在浏览文件时将文件临时保存在公用文件夹中。

那是在浏览文件时首先保存在公用文件夹中,然后我将使用 阅读此文件roo gem,所以请帮助我如何进行。

4

1 回答 1

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

实际上,您必须在尝试存储文件之前检查文件是否已上传,如果您正在像第一个示例中那样处理文件,请检查文件是否存在。但是为了简单起见,跳过了它。

于 2013-09-21T18:16:48.430 回答