Можно ли использовать Ajax для загрузки файлов? - PullRequest
26 голосов
/ 13 февраля 2009

Я не хочу использовать jQuery, но я бы хотел использовать Ajax для загрузки файлов. Это возможно?

Если так, где я могу найти информацию / учебник по нему?

Ответы [ 7 ]

39 голосов
/ 13 февраля 2009

Нет, это невозможно сделать с помощью JavaScript.

Однако, чтобы создать ощущение «AJAX», вы можете отправить форму в скрытый iframe и вывести на него результаты скрипта, а затем обработать оттуда. Google ajax iframe upload и начните отсюда.

Если вы используете jQuery, есть также Form plugin, который автоматически создаст этот iframe для вас, если в вашей форме есть какие-либо файловые поля. Я не использовал это, чтобы сделать это, но я слышал хорошие вещи.

Как указано в комментариях, вы также можете использовать что-то вроде очень популярного SWFUpload для достижения желаемого эффекта с помощью Flash.

31 голосов
/ 23 июня 2011

Если кто-нибудь найдет этот вопрос намного позже: да, теперь это возможно с JavaScript.

HTML5 определил 2 новых API, которые вы используете вместе для достижения этой цели: Drag and Drop API и File API. Вы можете использовать jQuery для эффективного взаимодействия с API, позволяя людям перетаскивать файлы для загрузки.

Вот учебник о том, как это сделать.

Код в настоящее время работает в Chrome 6+ и Firefox 3.6+, Safari 6 и IE 10. Если вам нужна поддержка Safari 5, код остается почти таким же, но вместо этого вы используете объект FormData для списка загружаемых файлов (подробнее информация в посте).

Opera поддерживает File API с 11, но не DnD API, операция удаления не инициирует загрузку, но они поддерживают получение доступа к файлу с помощью API. Я полагаю, что в 12 они завершат поддержку DnD API.

01-20-14 Обновление: все основные браузеры теперь поддерживают все стандартные API, поэтому данное руководство работает во всех браузерах.

2 голосов
/ 13 февраля 2009

я использую swfupload для нескольких загрузок, подобных ajax (на основе JavaScript / flash)

1 голос
/ 23 марта 2009

Предполагая, что вы используете Java, DWR версии 3.0 (в настоящее время в RC1) поддерживает загрузку / выгрузку двоичных файлов, что упрощает задачу. У меня еще не было возможности попробовать это, но мы широко используем DWR с полным успехом; это отличный инструментарий Ajax.

http://directwebremoting.org/blog/joe/2008/12/16/dwr_version_3_0_release_candidate_1.html

1 голос
/ 16 февраля 2009

Строго говоря, существуют возможности для реальной загрузки файлов AJAX , но это возможно только в Firefox 3+, Safari 4 и Chrome 2. Во всех других браузерах вы должны использовать обходной путь, например, метод iframe. или загрузчик на основе Flash.

1 голос
/ 13 февраля 2009

Вот несколько подробностей о том, как это делает gmail, используя iframe:

http://www.sajithmr.com/upload-files-like-gmail/

0 голосов
/ 13 февраля 2009

Лично я не использовал его, но Ajax Uploader - это недавно обнаруженный мной компонент, который говорит, что может загружать файлы внутри UpdatePanel (при условии, что вы используете ASP.NET).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...