2011-04-25 38 views
21

我正在尋找一種上傳文件(一個xml文件)到Rails 3的公共目錄的簡單方法。一旦它在那裏,我想打開它,解析內容並刪除之後的文件。Rails 3 - 將文件上傳到公共目錄

每當我搜索文件上傳時,我都會遇到Paperclip。但我不想將該文件與對象關聯。我只想上傳它。最簡單的方法是什麼?

回答

43

a。表格

<%= form_for :file_upload, :html => {:multipart => true} do |f| %> 
    <%= f.file_field :my_file %> 
    <%= f.submit "Upload" %> 
<% end %> 

b。控制器

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 

但是你可以分析只是臨時文件,所以你不需要把它複製到公共目錄,它會自動刪除

+0

非常感謝。事實上,我已經有了。我只是不知道臨時文件已經在我的params散列中。 – smark 2011-04-26 08:21:54

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 
+3

呃。每次調用方法時不要執行require - 在文件頭中執行一次(因爲它是stdlib的一部分,如果它是一個gem,則應該將它放在gemfile中) – yxhuvud 2012-01-24 16:36:49

-1
img = params[:user][:photo] 
File.open(Rails.root.join('public','uploads',img.original_filename),'wb') do |file| file.write(img.read)