Как разобрать загруженный текстовый файл в Rails3 - PullRequest
3 голосов
/ 19 февраля 2011

У меня есть форма с вводом файла;

<%form_tag '/dboss/newsbsresult' , :remote=>true do %>
    <input type="file" id="examsendbutton" name="txtsbs"/><br/>
    <input type="submit" value="Gonder">
<%end%>

Здесь я хочу, чтобы пользователь выбрал txt-файл, который я пытаюсь проанализировать и использовать на сервере, но я не могу перехватить загруженный файл с помощьюэтот код,

def newsbsresult
        @u = params[:txtsbs] #Or params[:txtsbs].to_s
        p @u
end

Каков истинный способ достижения этого?

Ответы [ 3 ]

2 голосов
/ 20 февраля 2011

AJAX-запросы не поддерживают загрузку файлов из коробки - или технически вообще. Это связано с тем, что JavaScript не может читать данные из файлового поля напрямую (кроме HTML 5). Существует несколько способов загрузки файлов, подобных AJAX (например, file-uploader или uploadify , среди более старых методов), но Rails не поддерживает их, просто установив :remote => true - вы должны использовать что-то еще / дополнительное, чтобы заставить его работать.

Простое решение - удалить :remote => true и добавить :multipart => true.


Дальнейшее чтение:

0 голосов
/ 20 февраля 2011

На основании вашего вопроса, если я правильно понимаю. Вы хотите прочитать данные из загружаемого файла. Я столкнулся с тем, что нужно показать загруженный текст в другой текстовой области в моем приложении Rails.

Вот что я сделал.

View

  1 <%= form_tag('/dboss/newsbsresult' , :multipart => true) do %>  
  2   <input type="file" id="examsendbutton" name="txtsbs"/><br/>
  3   <input type="submit" value="Gonder">
  4 <% end %>

Контроллер

  1   def index
  2     if (params[:txtsbs].present?)
  3       @upload_text = params[:txtsbs].read
  4       render :text => @upload_text
  5    end
  6   end

Маршрут

  match 'dboss/newsbsresult' => 'user#index'
0 голосов
/ 19 февраля 2011

Попробуйте добавить :multipart => true к вашему form_tag

<% form_tag '/dboss/newsbsresult' , :remote=>true, :multipart => true do %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...