Прогрузка файлов через Ajax

    Довольно интересный метод прогрузки файла, хотя думаю многие его знают.


    Для начала создадим форму и скрытый iframe в который собственно и будет отправлятся сама форма (на это указывает атрибут target).
    <br>
    <br>
      /><br>
      /><br>
    <br>

    <br>

    Когда будет нажата кнопка Submit, форма отправится в скрытый iframe, и будет вызван метод контроллера «upload_action». Теперь необходимо получить данные в контексте всей страницы (родительского окна для фрейма). Для этого используется очень интресное решение. Опишем контроллер для получения и обработки данных из этой формы:
    <br>
    class UploadController < ActionController::Base<br>
    def upload_action<br>
      responds_to_parent do<br>

        File.open("public/files/upl_file",'wb') do |file| <br>
         file.write params[:upl_data].read <br>
        end <br>
        render :update do |page|<br>
         page.replace_html 'upload_frm', :partial => 'upload'<br>

        end<br>
      end<br>
    end <br>
    end<br>

    Обращение к iframe реализовано плагином respond_to_parent. Для генерации такой формы с iframe можно использовать плагин remote_upload.

    Решение на мой взгляд очень даже симпатичное.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 31

      0
      Класс!
        0
        Прогрузка, нажмета... Понимаю что не главное, но режет слух.
          0
          исправил :)
          +1
          Указали бы в заголовке «Ruby», а то я сначала не понял, о каком языке идет речь.
          Понял, только посмотрев на теги.
            0
            Так ведь вроде этот топик в блоге Ruby, разве надо еще и в заголовке указывать?
              0
              А ещё хорошо бы было в заголовке Ruby on Rails. Стандартный руби класса ActiveController не имеет.
            0
            display: none для iframe ставить нельзя. в Safari 2.*, возможно 3 такое не сработает.
              0
              я лишь показал идею, а заточка под браузеры это уже дело каждого
                0
                Нужно позиционировать его за пределами окна браузера:
                top: -10;
                left:-10;
                Ну и естественно размер - 1 пкс.
                0
                идея стара конечно, но на руби реализация выглядит шикарно!
                  0
                  было ещё где то видео с баром отображающим ход загрузки.
                  а если такой бар прицепить к act_as_attacment , то будет вообще замечательно.
                  хотя конечно на самом деле это всего лишьукрашательства.
                    +2
                    Я ба хотел спросить у создателей этой ленты - Какую цель вы преследуете?

                    Просто я, не знающий Ruby, но знающий другие ЯП, не могу понять такого резкого перехода с описания оператора присваивания и основ языка к классам и другим более сложным конструкциям языка. Вы считаете, что ссылка на Викибуку(была чуть раньше в ленте) достаточное условие для такого резкого перехода.

                    Мне казалось, что данная лента создана для тех, кто хочет изучить Ruby, а не для тех кто его уже знает или профессионалов, которые хотят повысить свои умения.

                    Если я не прав, то я извиняюсь.
                      0
                      тут много начинающих, если что то не понятно, то лучше спросить, чем ворчать.
                      ну или поискать на http://groups.google.com/group/ror2ru/to…
                        0
                        Я не ворчу. Я спрашиваю - Чем обоснован такой разброс материала?

                        Спрашивать достаточно часто не очень то и хочется, и многих это будет раздражать.

                        А если материал давать постепенно, то вопросов будет намного меньше и они будут более серьёзные и обоснованные.
                          0
                          обоснован тем, что у новичков тоже разный уровень.
                          и не факт, что то что интересно тебе будет преддствалять хоть какуюто ценность для других.
                      +2
                      AJAX тут совершенно не причём
                        +2
                        AJAX — это просто очень популярный buzzword. Сказал AJAX — все понабежали: "Ооо, без релоуда!" А мелочи технологии мало кто знает.
                        • НЛО прилетело и опубликовало эту надпись здесь
                          +1
                          >«форма отправиться в скрытый»

                          ошибка / опечатка.
                            +1
                            сори за мой русский
                            0
                            Да, красива. Напишите про прогресс бар статью. А то я кроме плагина под mongrel никаких способов не знаю.
                            0
                            ни Руби, ни ActionPack "не особо при причем" :-) Это стандартный способ не перегружать страницу целиком при загрузке файлов в форме. По сути - способ сделать асинронный ввод при загрузке файлов. Первым так сделал Google в Gmail (аттачменты там так приклеивались к письму).
                              0
                              совершенно верно, я лишь показал реализацию в RoR
                                +1
                                Ну я думаю iframe это самый удачный выход в web1.0, может и будующие спецификации форм что то изменят, но пока решение простое и главное сквозное :-)
                              • НЛО прилетело и опубликовало эту надпись здесь
                                +1
                                кстати, в PHP 5-6 не намечается сразу патч, чтобы скрипт получал доступ к загрузке сразу, а не после загрузки во временную папку? Ну как в Perl...
                                  0
                                  Я бы сказал - что это пока единственный возможный способ ajax-like загрузки файлов на сервер, других способов, насколько я знаю, пока не изобрели.

                                  Этот метод, кстати, вшит в библиотеку Дмитрия Котерова JsHttpRequest (http://dklab.ru/lib/JsHttpRequest/manual.html#cont4), ифрейм там создается динамически.
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                    0
                                    Ничего общего с Ajax в этом нет :(
                                    Интересно, есть ли понятие tag-spam, означающее действия по привлечению юзеров путем введения в заблуждение посредством недостоверного указания тагов???

                                    И еще: Допускаю, что это разновидность поискового спама.
                                      0
                                      А как такое можно реализовать на php?

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое