Rails 3 - загрузка файлов в общий каталог
Я ищу простой способ загрузить файл (xml файл) в общий каталог Rails 3. После этого я хочу его открыть, проанализировать содержимое и удалить файл после этого.
Всякий раз, когда я искал загрузку файла, я сталкивался с Paperclip. Но я не хочу связывать файл с объектом. Я просто хочу его загрузить. Какой самый простой способ сделать это?
Ответы
Ответ 1
а. Форма
<%= 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
Но вы можете анализировать только временный файл, поэтому вам не нужно копировать его в общедоступный каталог и он будет автоматически удален
Ответ 2
Я получил ошибку, указывающую "undefined метод` cp" для File: Class". Понял, что это действительно должно быть обновлено следующим образом:
Правильный код для метода 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
img = params[:user][:photo]
File.open(Rails.root.join('public','uploads',img.original_filename),'wb') do |file| file.write(img.read)