Rails 3 - загрузка файлов в публичный каталог - PullRequest
21 голосов
/ 25 апреля 2011

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

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

Ответы [ 3 ]

43 голосов
/ 25 апреля 2011

а. Форма

<%= 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

Но вы можете разобрать только временный файл, поэтому вам не нужно копировать его в публичный каталог, и он будет автоматически удален

3 голосов
/ 30 апреля 2011

Я получил сообщение об ошибке "неопределенный метод` 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
0 голосов
/ 07 декабря 2012
img = params[:user][:photo]
File.open(Rails.root.join('public','uploads',img.original_filename),'wb') do |file| file.write(img.read)
...