Ответ 1
Вы работаете на сервере Apache? Если это так, вы можете просто добавить это в свой файл .htaccess:
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{QUERY_STRING} fdl=1
RewriteRule .? - [T=application/octet-stream]
Проверяет, есть ли файл Проверяет, находится ли параметр fdl = 1 в querystring Вывод как октет-поток/сила скачать
Теперь, когда вы хотите, чтобы браузер начал загружать что-либо на этом сайте, просто поместите параметр на URL:
<a href="img.jpg?fdl=1">Download Image</a>
Чтобы сделать то же самое на сервере окон IIS, добавьте исходящее правило в web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<outboundRules>
<rule name="Force Download">
<match serverVariable="RESPONSE_Content_Disposition" pattern=".?" negate="false" />
<action type="Rewrite" value="application/octet-stream" replace="true" />
<conditions>
<add input="{QUERY_STRING}" pattern="fdl=1" />
</conditions>
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
EDIT (10/4/2016):
Похоже, что атрибут download
по-прежнему не полностью принят всеми браузерами.
Для реализации на основе JavaScript/браузера вы можете посмотреть FileSaver.js, который является polyfill для сохранения функциональности в браузерах, которые не Не поддерживайте его. Тем не менее, у него нет идеального покрытия.