Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Ruby On Rails > Как организовать загрузку файла от юзера? |
Автор: Wowa 10.3.2007, 20:56 |
Как организовать загрузку файла от юзера? Например, картинку на сервер. С использованием RoR. Добавлено @ 20:58 Вот, нашел кое-что: http://sean.treadway.info/demo/upload/ |
Автор: rubyclub 23.3.2007, 11:06 |
Так ты интересуешься лии расказываешь как это сделать ...??? |
Автор: Wowa 23.3.2007, 12:24 |
и то, и другое. |
Автор: nwlad 23.3.2007, 14:02 |
Вот на английском: 1. In a Terminal or command prompt window, type the following command: ruby script/generate migration AddPhotoColumn 2. Open the newly created 003_add_photo_column.rb file that was added under /db/migrate and modify it to look like the following: class AddPhotoColumn < ActiveRecord::Migration def self.up add_column :classifieds, :content_type, :string :default => "image/png" execute 'ALTER TABLE classifieds ADD COLUMN picture LONGBLOB' end def self.down remove_column :classifieds, :content_type remove_column :classifieds, :picture end end All you do in this file is to tell Rails to add two new columns to the classifieds table called picture and content_type. You are setting the picture column’s type to be LONGBLOB, which is a MySQL-specific column type for storing large amounts of noncharacter data such as images. LONGBLOB is not a default migration type for Rails (there is a migration database called :binary for the BLOB datatype), hence having to use some actual SQL commands to add the second column. Since there is a chance that an image might be more than 65KB, using LONGBLOB is a better solution. The content_type field stores the data type of the uploaded image, which gives the browser a hint of what type of file you are trying to work with so it knows how to render it. 3. Save the changes to your migration file and then run rake migrate in the Terminal or command prompt window. Your new column should now be created. Let’s continue with the quest of enabling a seller to upload an image when creating a new classified. The first thing you should do is update your new classified view. 4. Open up the new.rhtml file in app/views/classified and add the following code before the submit_tag line: <p><label for="classified_picture">Picture</label><br /> <%= file_field 'classified', 'pictureimg' %></p> This snippet of code introduces the file_field helper. The helper works just like a text_field helper, but instead returns an input tag of the “file” type instead of “text”. 5. Next, modify your start_form_tag to have the :multipart parameter set to true by changing the start_form_tag line to the following: <%= start_form_tag ({:action => 'create'}, :multipart => true) %> By setting the multipart parameter, you ensure that your action properly passes along the binary data from the file field to the database. 6. Next, open up the classified.rb in the app/models file and the following methods to it just above the protected keyword: def pictureimg=(picture_field) return if picture_field.blank? self.content_type = picture_field.content_type.chomp self.picture = picture_field.read end Save your changes. The purpose of the pictureimg accessor method is to take the data from the file_field helper in our view and then associate the uploaded image’s content type with our content_type field and the image itself with our picture field. < просьба всем: давая ответы будте конкретны, пишите по существу. > |
Автор: MeFistofeL 28.3.2007, 11:52 | ||||
Во вьюшке добавляеш
В контроллере
И всё в принципе ![]() |
Автор: rubyclub 9.5.2007, 22:13 | ||
Вот написал тоже статью по этому поводу. В двух словах скажу что не обойтись таким примером как привели выше, естьеще одна особенность когда размер файла больше 10 кб тогда он храниться в временном файле, иначе он в буфере.
Я написал клас спеуиально чтобы ббыло удобно заботать с загрузкой файлов, проверять размер перед загрузкой тиф файлов и дт. вот прикрепил может скачать и посомтреть. Вопросы можешь задавать здесь http://rubyclub.com.ua/messages/show/62 |
Автор: MPie 16.5.2007, 11:09 |
Копайте в сторону плагина acts_as_attachment. IMHO, решает большинство проблем, связанных с загрузкой файла. Только с Аяксом не дружит... |
Автор: wladk 17.5.2007, 23:15 | ||||||
Что-то я торможу:( Есть поле на шаблоне
Есть код в контроллере
Мелкие файлы грузяться, 109к грузится на половину. Пытался реализовать различные ветки в зависимости от способа хранения, но чувствую себя индусом - копировать получается понимать нет:(
Напишите кусок кода, как оно должно быть, потому как мысль стоит как вкопанная:( Спасибо! |
Автор: wladk 23.5.2007, 23:17 |
Ну вообщем нашел проблемму. Была она в старой версии MySQL, 3,21 что ли.... Поле я создал как :binary и в него влазило 64к. Остальное совершенно молча обрезалось. После обновления субд моментально вывалилась ощибка про то что данных слишком много для данного поле. Поменял тип поля и все заработало. Если это кому-то интересно.... |
Автор: andron 29.8.2007, 23:12 | ||||
У меня появилась проблемка связанная с загрузкой файлов. Пользуюсь NetBeans оттуда загружаю webrick, большие файлы не хочет загружать в БД ни в какую. Выскакивает ошибка:
или такая
В MySQL с типами данных все в порядке. Но когда загрузил webrick через консоль cmd все заробатало все загружается. Это хорошо когда все работает, но хочется вызывать webrick через NetBeans, что удобнее. Помогите разобраться |
Автор: kronos_vano 6.9.2007, 01:36 |
>if @up_file.instance_of?(Tempfile) не правильно! В монгреле файлы до 9-10 килобайт имеют тип StringIO. Я сделал аплоад файлов через аякс, с проверкой размера и прогресс баром под монгрел (юзал монгрел аплоад прогресс гем). Если кому интересно могу рассказать что и как ![]() |
Автор: andron 12.9.2007, 13:21 |
Проблема загрузки файла в БД при рыботе с Safari прописывает ошибку: #<ArgumentError: nagative length -42 given> В чем причина? В других браузерах работает все нормально все нашел проблема с Safari, не понимает по-русски |
Автор: OmeZ 4.11.2007, 08:31 |
расскажи |
Автор: G61 4.11.2007, 18:14 |
Присоединяюсь. Очень нужная штука. |
Автор: OmeZ 5.11.2007, 10:00 | ||
Народ, я нашел проблему обрезки файла! Есть в стандартной дукументации, цитирую
|
Автор: kronos_vano 6.11.2007, 01:46 |
Ладно ждите) к среде обещаю написать по шагам. Будет: а) druby б) контроль размера в) прогрессбар |
Автор: G61 11.11.2007, 20:34 |
kronos_vano, Ты куда пропал? Ждем с нетерпением! ![]() |
Автор: aJIeks 21.1.2008, 08:56 |
прошло два месяца... а примера и нет ![]() |
Автор: Flam 22.1.2008, 23:02 |
к среде какого месяца и какого года он не написал... печально |
Автор: G61 30.1.2008, 21:43 | ||
оффтоп: прямо как письмо Паули Бору
Так что мы тоже будем рады если kronos_vano ответит! |
Автор: rubyclub 31.1.2008, 14:41 |
Так ребята а чего вы мучаеетсь есть же плагин который позволяет красиво загружать файлы хотя я лично им не пользуюсь я уже давал здесь пример кода библиотеки для загрузки файлов |
Автор: kronos_vano 1.3.2009, 09:23 | ||
Лучше поздно чем никогда: http://habrahabr.ru/blogs/ruby/53191/ |