Подтвердить что ты не робот

Rails 3 - загрузка файлов в общий каталог

Я ищу простой способ загрузить файл (xml файл) в общий каталог Rails 3. После этого я хочу его открыть, проанализировать содержимое и удалить файл после этого.

Всякий раз, когда я искал загрузку файла, я сталкивался с Paperclip. Но я не хочу связывать файл с объектом. Я просто хочу его загрузить. Какой самый простой способ сделать это?

4b9b3361

Ответ 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)