Я не хочу использовать jQuery, но я бы хотел использовать Ajax для загрузки файлов. Возможно ли это?
Если да, где я могу найти информацию/учебник по этому вопросу?
Я не хочу использовать jQuery, но я бы хотел использовать Ajax для загрузки файлов. Возможно ли это?
Если да, где я могу найти информацию/учебник по этому вопросу?
Нет, это невозможно сделать с помощью javascript.
Чтобы дать ощущение "AJAX", вы можете отправить форму в скрытый iframe и вывести результаты script, а затем обработать оттуда. Google ajax iframe upload
и начните работу там.
Если вы используете jQuery, есть также Form plugin
, который автоматически создаст этот iframe для вас, если ваша форма имеет любые поля файла в этом. Я не использовал его для этого, но я слышал хорошие вещи.
Как указано в комментариях, вы также можете использовать что-то вроде очень популярного SWFUpload
для достижения желаемого эффекта с помощью Flash.
Если кто-то найдет этот вопрос намного позже: да, это возможно с 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, поэтому этот учебник работает во всех браузерах.
Я использую swfupload для нескольких аякс-подобных загрузок (основанный на javascript/flash)
Вот немного подробностей о том, как это делает gmail, используя iframe:
Строго говоря, есть возможности сделать реальный файл загрузки AJAX, но это возможно только в Firefox 3+, Safari 4 и Chrome 2 Во всех других браузерах вы должны использовать обходной путь, например, метод iframe или загрузчик на основе Flash.
Предполагая, что вы используете Java, DWR версии 3.0 (в настоящее время в RC1) имеет поддержку загрузки/загрузки двоичных файлов, что делает проблему тривиально легкой. У меня еще не было возможности попробовать это, но мы широко используем DWR с полным успехом; это отличный инструментарий Ajax.
http://directwebremoting.org/blog/joe/2008/12/16/dwr_version_3_0_release_candidate_1.html
Не использовал его лично, но Ajax Uploader - это компонент, с которым я недавно столкнулся, который говорит, что он может загружать файлы внутри UpdatePanel (при условии, что вы используете ASP.NET).