FileUploader: настройка и «доведение до ума»

Доброго всем времени суток.

Когда возникла необходимость загружать файлы на сервер в одном из проектов, первым делом я обратился к Google’у. Использование AJAX было основным из условий. Наткнулся в итоге на сайт Andrew Valums, который как раз озадачился в один прекрасный момент написанием плагина для загрузки файлов на сервер с использованием AJAX. Далее собственно и пойдет речь об этом плагине.

Оказалось версий две, я взял что поновее, тем более она работает с jQuery. Называется FileUploader . Вот ссылка на исходники на GitHub’е.

И вот тут начались так называемые «танцы с напильником». Возможно кто-то скажет что не тот плагин выбрали для реализации, или надо было делать «вот так». Ага, согласен, но мое решение вот такое.

Проект написан на ASP.NET MVC, но в нем я не особо силен. Нашел пример подобной реализации, но только предыдущей версии скрипта на ASP.NET MVC на Хабре, за что автору огромный «респект и уважуха». В процессе разбора кода выяснилось, что просто заменой скрипта тут не обойдется, да и сама новая версия использует несколько вариантов отправки. Один из них, кстати на мой взгляд наиболее удобный в том плане, что позволяет проверить размер файла до его загрузки на сервер, XmlHttpRequest, или коротко XHR. Второй отправка обычной генерируемой формой. Но то ли по причине сжатых сроков, то ли из-за моего скудного знания в области ASP.NET первый вариант запроса так и не дал результата, но он выбирается по умолчанию, т.к. поддерживается браузером. Танец номер раз — закомментил код, в котором выбирается вариант отправки. Теперь у меня файл уходил только по отправке формы. Скажете глупо и не профессионально. А мой ответ — «Но ведь работает!». В будущем надеюсь все же подружиться с этой штукой. Но не об этом.

Далее возник вопрос: а ведь записей на странице открывается несколько, да и при скролинге их количество возрастает после подгрузки. И для каждой записи необходимо сделать свой upload. Решение простое и возможно опять же не изящное — создавать объект загрузки для каждой записи. У меня были сомнения по этому поводу —  а не будет ли из-за этого провисать и тормозить браузер. Вывод — ничего подобного. Все работает как часики. Процесс сохранения и выдачи файлов — не для этой статьи, это скорее по части ASP.NET.

Так же была необходимость локализации продукта. С этим вопросов не возникло. Хотя документации по скрипту вообще никакой практически, если не брать в счет краткое изложение автора продукта. Я попробую изложить вкратце чем воспользовался сам:

  • sizeLimit — задает максимальны размер загружаемого файла. Работает только при использовании XHR.
  • minSizeLimit — задает минимальный размер загружаемого файла. Так же работает только с XHR.
  • element — элемент, внутри которого будет создаваться кнопка и список с файлами.
  • allowedExtensions — допустимые расширения файлов.
  • action — куда отправляются данные.
  • template — шаблон всего элемента загрузки.
  • fileTemplate — шаблон отдельно взятого файла.
  • messages — объект, содержащий сообщения об ошибках.
    • typeError — ошибка типа файла.
    • sizeError — ошибка размера файла.
    • emptyError — ошибка пустого запроса, когда файл не выбран.
  • classes — объект с классами, которые используются в шаблонах. Их не мало, да и по названию можно примерно определить где и когда этот класс будет использоваться.
  • onComplete — функция, запускаемая по завершении процесса загрузки файла.
  • showMessage — функция выдачи сообщений. Можно переопределить для использования, например, jQuery-UI.

Вроде описал все, которые использовал сам. Если что вспомню или буду дополнительно использовать — допишу. А пока все :)



Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Яндекс.Метрика