Подтвердить что ты не робот

Можно ли использовать Ajax для загрузки файлов?

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

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

4b9b3361

Ответ 1

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

Чтобы дать ощущение "AJAX", вы можете отправить форму в скрытый iframe и вывести результаты script, а затем обработать оттуда. Google ajax iframe upload и начните работу там.

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

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

Ответ 2

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

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

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

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

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

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

Ответ 3

Я использую swfupload для нескольких аякс-подобных загрузок (основанный на javascript/flash)

Ответ 5

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

Ответ 6

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

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

Ответ 7

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