在我的Rails應用程序中,用戶可以上傳Excel文件。在我的模型存在使用attachment_fu像這樣一類的importfile:如何在Rails中通過請求保留臨時文件?
class ImportFile < ActiveRecord::Base
has_attachment :storage => :file_system, :path_prefix => 'public/imports', :max_size => 10.megabytes
end
當用戶點擊「添加文件」,他進入一個網頁,一個<%= fields.file_field:uploaded_data%>。 attachment_fu做它的工作和文件上傳正在完成(讓我們省略驗證問題)。我想保留這個文件以備將來使用,將上傳的文件複製到其他臨時文件中。臨時文件工作正常 - 我可以在磁盤上看到它。
def self.write_to_tmp(data)
temp_file = Tempfile.new("import", "#{Rails.root}/tmp")
begin
temp_file.write(data)
ensure
temp_file.close(false)
end
temp_file
end
我想要做的是顯示用戶預覽,然後讓他選擇,如果他想添加一個文件或放棄它 - 有兩個按鈕。當用戶選擇保存文件時,我遇到了問題,因爲上面剛創建的臨時文件已經消失。它在請求前被刪除。
有沒有人有提示如何實現這個?或者可以指向我上傳與預覽文件場景,就像我已經預見的那樣?我一直在尋找幾天,但我沒有找到一個。
感謝您的提示 - 這很有幫助。如果我決定擁有一些孤兒記錄,我不必切換到Paperclip,因爲attachment_fu也是。 – 2010-11-16 20:52:55