Для загрузки файлов предусмотрен тег (<input type=»file» /> , стандартными средствами его внешний вид особо не изменить.
В современных web приложениях использующих повсеместно ajax он смотрится анахронизмом, и мое мнение — морально устарел.
Конечно же для загрузки файлов на сайт можно использовать flash, но с этой задачей великолепно может справится и JavaScript.
AJAX загрузка позволит легко загрузить несколько файлов без обновления страницы, и использования какие-либо лишних элементов, чтобы показать окно выбора файла. Работает во всех основных браузерах, и, начиная с версии 2.0 не требует какой-либо библиотеки для запуска (хотя использetn некоторые функции jQuer). AJAX Ulpoad не создает лишних переменных в глобальном пространстве имен, так что она совместима с jQuery, Prototypejs, Mootools, JavaScript и другими библиотеками.
Как использовать?
1. Нужно создать кнопку.Можно использовать любой элемент!.
<div id=»upload_button»>Upload</div> <div id=»upload_button»> Добавить </ DIV>
В своем простейшем виде, можно создать его, используя следующий код:
new AjaxUpload('upload_button_id', {action: 'upload.php'});
2. Настройка загрузки AJAX
new AjaxUpload('#upload_button_id', { // какому скрипту передавать файлы на загрузку? только на свой домен action: 'upload.php', // имя файла name: 'userfile', // дополнительные данные для передачи data: { example_key1 : 'example_value', example_key2 : 'example_value2' }, // авто submit autoSubmit: true, // формат в котором данные будет ответ от сервера . // HTML (text) и XML определяются автоматически . // Удобно при использовании JSON , в таком случае устанавливаем параметр как "json" . // Также установите тип ответа (Content-Type) в text/html, иначе это не будет работать в IE6 responseType: false, // отправка файла сразу после выбора // удобно использовать если autoSubmit отключен onChange: function(file, extension){}, // что произойдет при начале отправки файла onSubmit: function(file, extension) {}, // что выполнить при завершении отправки файла onComplete: function(file, response) {} });
3. Как разрешить только определенных типов файлов?
new AjaxUpload('#button2', {action: 'upload.php', onSubmit : function(file , ext){// перечисляем какие типы файлов можно загружать//-- также нужно сделать проверку на стороне сервераif (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){ // extension is not allowed alert('Error: invalid file extension'); // cancel upload return false; } } });
Как это все работает?
Плагин создает невидимое поле ввода , и IFRAME. Так что это не совсем AJAX загрузка ).
как видим все довольно тривиально и удобно, единственный минус нет индикатора процесса загрузки
Тэги: ajax, file, input, JavaScript, jQuery, JSON, Mootools, Prototypejs, upload

Отличный плагин… Но отсутствие прогрессбара не самое худшее — плагин работает через раз по крайней мере на опере… Обидно, так то все конечно супер — просто и удобно, без всяких наворотов
Плагин ваще класс … у меня все хорошо работает нет ни каких косяков ни в одном браузере. я пытался сделать сам аналогичный но так и не додумкал как его сделать … оказывается все просто IFRAME. а то что нет индикатора загрузки да что поделать да и он толком то не так и нужен … сделать визуально будто что то происходит и все это проще сделать на флеше … на флеш как то не катит …
Спасибо за плагин, но с оперой определенно проблемы
ну а где пример-то?!
Как исправить что бы ответ приходил в utf-8 и небыло замены «<" на < ?