EOFError (тело с плохим содержимым) при попытке загрузить файл в Rails - PullRequest
2 голосов
/ 24 июня 2011

Примечание. Я включил весь вывод своей консоли в виде вставки ссылки, чтобы этот вопрос был легко читаем ...

Я пытаюсь создать базовую загрузку файла изображения для моего приложения RoR. Но каждый раз, когда я отправляю форму с прикрепленным изображением (многокомпонентная закодированная форма с одним вводом файла), я получаю следующую ошибку на консоли WEBRick:

http://pastebin.com/2kRgTaNg

Я уже некоторое время искал, и в некоторых других местах упоминались подобные проблемы, но единственное, что я нашел, было обновить стойку из-за ошибки в конкретной версии. Я не могу найти версию, на которую они ссылаются, и я запустил gem update и bundle update безрезультатно. Вот вывод bundle:

http://pastebin.com/7QZtGHaG

Я не уверен, что еще я могу сделать, чтобы обновить стойку-тест - я все еще очень плохо знаком с Rails и средой Linux в целом.

Последнее замечание: хотя я пытался загрузить несколько разных файлов разных размеров, от 4 КБ до 300 КБ, размер запроса, как видно из Firebug, всегда равен 216 Б. Я не очень хорошо знаком с внутренней работой многочастного запроса на загрузку файла, но возможно ли, что что-то не так с моей HTML-формой?

Ссылки на похожие проблемы:

Rails3, Cucumber, Capybara, Загрузка файла => тело с плохим содержимым (EOFError)?

http://groups.google.com/group/cukes/browse_thread/thread/5028306893c2c54a

Ответы [ 2 ]

5 голосов
/ 01 февраля 2014

Наткнулся на эту ошибку с помощью Sinatra - оказалось, что в файле ввода отсутствует атрибут name.

1 голос
/ 24 июня 2011

Похоже, проблема была не в Rails, а в моих формах.Я использовал этот плагин jQuery, чтобы попытаться настроить стиль управления вводом файлов.Он работает, помещая элемент управления вводом файла с opacity:0; поверх любого элемента, который вы предоставляете (в моем случае, кнопка div).

Я не уверен, что происходило, но запросы отправлялись из браузера с границей открытия для составных данных, но без тела или границы закрытия.Другими словами, FireBug показал полезную нагрузку исходящего запроса просто:

....

Request Payload:
------WebKitFormBoundaryzwgDaIoTked9N6CB

Response Headers:
...

Вместо:

....

Request Payload:
------WebKitFormBoundaryzwgDaIoTked9N6CB
Content-Disposition: form-data; name="upload"; filename="filename.jpg"
Content-Type: image/jpeg


------WebKitFormBoundaryzwgDaIoTked9N6CB--

Response Headers:
...

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...