Чтение загруженного файла в объект File с помощью метода контроллера - «невозможно преобразовать Tempfile в String» - PullRequest
2 голосов
/ 19 июля 2010

Итак, я пытаюсь реализовать функцию загрузки файлов, где, когда пользователь загружает файл, я могу прочитать его в объекте File и обработать его соответствующим образом:

def create
  name = params[:upload]['datafile'].original_filename
  directory = "public/data"

   # create the file path
   path = File.join(directory, name)

   # read the file
      File.open(params[:upload][:datafile], 'rb') { | file |
         # do something to the file  
    }    
end

В файле File.open выдается сообщение об ошибке «невозможно преобразовать Tempfile в строку», когда я пытаюсь прочитать файл.

Чего мне не хватает?

1 Ответ

6 голосов
/ 19 июля 2010

Это означает, что params[:upload][:datafile] уже является файлом, поэтому вам не нужно указывать его File.openВаш код должен быть:

def create
  name = params[:upload]['datafile'].original_filename
  directory = "public/data"

   # create the file path
   path = File.join(directory, name)

   file = params[:upload][:datafile]
   # do something to the file, for example:
   #    file.read(2) #=> "ab"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...