Можно ли инициировать запрос на загрузку в браузере для распознанных типов MIME, используя только JavaScript (подход на стороне клиента)?
Я хотел бы позволить пользователю загружать файл одним нажатием. Однако существует проблема, связанная с известными типами мемов, такими как HTML, аудио, видео и т.д. В идеале я хотел бы вызвать приглашение для загрузки аудио/видео файлов. В конечном счете, я хотел бы сделать это и для документов HTML. Основная идея заключается в том, чтобы облегчить пользователям загрузку файлов, не прося их перейти в контекстное меню.
Я думаю, например, для людей, которые не очень комфортно с компьютером и его основными функциями. Эти люди наверняка предпочтут лучший способ, чем "сохранить как".
Причина, по которой я ищу решение JavaScript, заключается в том, что подход PHP работает, только если вы находитесь в контексте веб-сайта. Всякий раз, когда вы находитесь внутри плагина или встраиваемого скриптового контекста (т.е. разрабатываете плагин для Firefox, Chrome или Safari), вы можете не запрашивать ответ на стороне сервера.
Я пытался добиться этого с помощью window.open()
и document.execCommand("saveAs",...
. Он работает, хотя он не работает и не подходит для больших файлов.
Затем я попробовал Downloadify, которая не работает в каждой ситуации.
Существует ли чистый JavaScript, нет Ajax-способа вызвать приглашение к загрузке, чтобы пользователь мог напрямую загрузить файл, просто щелкнув левой кнопкой мыши?
Ответы
Ответ 1
В HTML5 есть новый атрибут download
, с которым можно связывать ссылки. Он указывает браузеру, что ресурс должен быть загружен, а не навигацией. Сейчас он работает только в Chrome, но он является частью спецификации HTML и, надеюсь, будет принят другим браузером в ближайшее время.
Демо: http://html5-demos.appspot.com/static/a.download.html
Дополнительная информация: http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download
Ответ 2
Если кто-то дойдет до этого вопроса, лучшим решением будет
<a href="example" download target="_blank">
Если браузер поддерживает атрибут HTML5, загрузка начнет загрузку файла, в противном случае (в случае Internet Explorer и старых браузеров) ссылка откроет другое окно с загружаемым файлом.
Ответ 3
Вы можете использовать <a href="example" download>
. Это HTML5, и он работает с Chrome, Firefox и Edge (но не с Internet Explorer, даже с современными версиями).
Ответ 4
Просто небольшая заметка (так как я не могу добавить комментарий):
В Firefox этот атрибут работает только для URL одного и того же происхождения.
Просто потому, что я вручную скачивал страницы с других доменов.
Ура,