我尝试使用smarter_csv使用我的Rails应用程序解析csv文件。但是文档只解释了如何解析已经属于该应用程序的文件。
我想解析一个本地存储在我计算机上的文件。所以我想我必须上传文件,解析它,然后删除它。
这是我走了多远:
<%= form_tag({action: :upload}, multipart: true) do %>
<%= file_field :csv %>
<%= submit_tag 'Submit' %>
<% end %>
那么我如何在控制器操作中引用和使用上传的文件?
def upload
#save file temporarily to app
filename = #filename
#parse file with smarter_csv
#File.delete(filename)
end
答案 0 :(得分:1)
要将文件路径作为字符串获取,您需要执行以下操作:
filename = params[:csv].path
asms [:csv]是一个UploadedFile对象。您不需要自己处理临时文件,即存储和删除它。 Rails会为你做到这一点。根据文件:
上传的文件是临时文件,其生命周期是一个请求。当对象完成后,Ruby取消链接文件,因此不需要使用单独的维护任务来清理它们。