Можно ли инициировать запрос на загрузку в браузере для распознанных типов 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, даже с современными версиями).