Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка файлов. ЧЯДНТ? ошибка с кодировкой? или еще чем-то? 
:(
    Опции темы
Mysa
Дата 10.2.2013, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 13.4.2011

Репутация: нет
Всего: нет



Господа, выручайте.
Начал ковырять RoR3 недавно. Добрел до загрузки файлов. Мне нужно загрузить несколько файлов от пользака. Вроде делаю все по инструкции, но выкидывает эксепшен...

Вот вьюха:
Код

<%= form_tag({:action => :pics_save}, :multipart => true) do %>
    <p>Логотип: <p>
    <%= file_field_tag 'logo' %><br>
    <p>Иконка над формой: <p>
    <%= file_field_tag 'input_pic' %><br>
    <p>Иконка 1: <p>
    <%= file_field_tag 'ico1' %><br>
    <p>Иконка 2: <p>
    <%= file_field_tag 'ico2' %><br>
    <p>Иконка 3: <p>
    <%= file_field_tag 'ico3' %><br>
    <%= submit_tag %>
<% end %>


экшн в контроллере:
Код

  def pics_save "'это line 14
    upload_logo = params[:logo]
    upload_inputpic = params[:input_pic]
    upload_ico1 = params[:ico1]
    upload_ico2 = params[:ico2]
    upload_ico3 = params[:ico3]

    File.open(Rails.root.join('public', 'img', upload_logo.original_filename), 'w') do |file|
        file.write(upload_logo.read)
    end
    File.open(Rails.root.join('public', 'img', upload_inputpic.original_filename), 'w') do |file|
        file.write(upload_inputpic.read)
    end
    File.open(Rails.root.join('public', 'img', upload_ico1.original_filename), 'w') do |file|
        file.write(upload_ico1.read)
    end
    File.open(Rails.root.join('public', 'img', upload_ico2.original_filename), 'w') do |file|
        file.write(upload_ico2.read)
    end
    File.open(Rails.root.join('public', 'img', upload_ico3.original_filename), 'w') do |file|
        file.write(upload_ico3.read)
    end
  end


Пока без проверок и валидаций, просто сферическая загрузка в вакууме. 

Вот ошибка и хеш:

Код

 Encoding::UndefinedConversionError in MadmController#pics_save

"\x89" from ASCII-8BIT to UTF-8

Rails.root: c:/money
Application Trace | Framework Trace | Full Trace

app/controllers/madm_controller.rb:22:in `write'
app/controllers/madm_controller.rb:22:in `block in pics_save'
app/controllers/madm_controller.rb:21:in `open'
app/controllers/madm_controller.rb:21:in `pics_save'

Request

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"mowVsDT3yPBExo6+379JUvg+cYLwyLwbYwxiJO11b2M=",
 "logo"=>#<ActionDispatch::Http::UploadedFile:0x3180870 @original_filename="logo.png",
 @content_type="image/png",
 @headers="Content-Disposition: form-data; name=\"logo\"; filename=\"logo.png\"\r\nContent-Type: image/png\r\n",
 @tempfile=#<File:C:/Users/Mysa/AppData/Local/Temp/RackMultipart20130210-4900-18rc5qc>>


Параметры не все привожу, там по всем остальным файлам все тоже....
Что за ошибка? Я так понимаю, одна часть пути к файлу в одной кодировке, а получаемое из параметров имя - в другой? 
Подскажите, плз...

Это сообщение отредактировал(а) Mysa - 10.2.2013, 01:07
PM MAIL   Вверх
Goganchic
Дата 10.2.2013, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



попробуй открывать файл на запись в бинарном режиме File.open('name', 'wb') do ... end
PM Jabber   Вверх
Mysa
Дата 10.2.2013, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 13.4.2011

Репутация: нет
Всего: нет



Спасибо огромное! Заработало!
PM MAIL   Вверх
Mysa
Дата 10.2.2013, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 13.4.2011

Репутация: нет
Всего: нет



И еще попутный вопрос. Если я не ошибаюсь, в upload_logo.original_filename должно лежать имя файла с расширением. Хочу его использовать в дальнейшем, но оно по-ходу как-то кодировано, как прочитать?
Спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.1150 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.