2011-01-25 1 views
4

Каждый раз, когда я просматривал загрузку файла AJAXy, где-то где-то всегда использовался iframe.Можно ли загрузить файл с помощью AJAX и без iframe или Flash?

Можно ли загрузить файл с использованием AJAX и без iframe или Flash? Как насчет последних версий Firefox и Chrome?

Я обсуждаю с моими коллегами, утверждая, что вы не можете загружать AJAXy с помощью чистого Javascript, так как вы не можете прочитать содержимое файла с жесткого диска пользователя, чтобы передать содержимое файла через вызов AJAX сценарий на стороне сервера.

+0

В справедливости, три ответа ниже (на момент написания статьи) предусматривают запасной вариант для IFrame/Flash для Internet Explorer. Поэтому я бы сказал, что нет * универсального * способа загрузить файл с AJAX без IFrame/Flash за кулисами. – Jake

ответ

2

Вы можете использовать файл API на Firefox (3.6 и выше), и я думаю, что последняя WebKit поддерживает его, а также (не уверен), хотя.

Я сделал плагин Mootools, который работает на FF:

http://mootools.standupweb.net/dragndrop.php

+0

Только что понял это. Мне придется отказаться от моих аргументов! –

2

Вы можете использовать знаменитый jQuery Uploadify plugin.

Uploadify плагин JQuery, который интегрирует полностью настраиваемый несколько утилита загрузки файлов на вашем сайте. Он использует смесь Javascript, ActionScript и любой серверный сервер , чтобы динамически создать экземпляр над любым элементом DOM на странице.

+1

Используется Flash. Я не упомянул, что не использовать Flash было требование ... Я отредактировал вопрос, чтобы включить это. –

2

Я также использую Valums File Uploader

+0

Это тот, на который меня указал мой коллега. Автор утверждает: «Этот плагин использует XHR для загрузки нескольких файлов с индикатором прогресса в FF3.6 +, Safari4 +, Chrome и возвращается к скрытой загрузке на основе iframe в других браузерах», но, глядя на код, я не вижу никаких доказательства чистого javascript, non-iframe, не-флеш-загрузки. –

+0

Хорошо, посмотрев еще немного, я вижу: xhr.send (файл). Таким образом, очевидно, что новая функциональность FileApi позволяет отправлять содержимое файла на серверную сторону, не подвергая их потенциально вредоносному клиентскому Javascript. –

+0

Я просто сражался с IE резервной копии этой библиотеки - будьте предупреждены, что он не делает отчет о ходе выполнения «правильной» версии. –