我正在寻找一种简单的方法将文件(一个xml文件)上传到Rails 3的公共目录。一旦它在那里我想打开它,解析内容并在此之后删除文件。
每当我搜索文件上传时,我都会遇到Paperclip。但我不想将文件与对象关联。我只是想上传它。最简单的方法是什么?
答案 0 :(得分:43)
一个。表格
<%= form_for :file_upload, :html => {:multipart => true} do |f| %>
<%= f.file_field :my_file %>
<%= f.submit "Upload" %>
<% end %>
湾控制器
def file_upload
require 'fileutils'
tmp = params[:file_upload][:my_file].tempfile
file = File.join("public", params[:file_upload][:my_file].original_filename)
FileUtils.cp tmp.path, file
... # YOUR PARSING JOB
FileUtils.rm file
end
但你可以只解析tempfile,所以你不需要将它复制到公共目录,它会自动删除
答案 1 :(得分:3)
我收到一条错误,指出“文件:类的未定义方法`cp”。意识到这应该实际更新如下:
file_uplad方法的正确代码:
def file_upload
tmp = params[:file_upload][:my_file].tempfile
require 'ftools'
file = File.join("public", params[:file_upload][:my_file].original_filename)
FileUtils.cp tmp.path, file
end
答案 2 :(得分:-1)
img = params[:user][:photo]
File.open(Rails.root.join('public','uploads',img.original_filename),'wb') do |file| file.write(img.read)