Ответ 1
Теперь спецификация HTML5 определяет очень полезный атрибут download
для гиперссылок, который в основном позволяет принудительно загружать поведение на стороне клиента, независимо от того, что входит в Content-Type
и Content-Disposition
с сервера:
В некоторых случаях ресурсы предназначены для последующего использования, а не для немедленный просмотр. Чтобы указать, что ресурс предназначен для загруженный для использования позже, а не сразу используемый,
download
атрибут может быть указан в элементеa
илиarea
, который создаетhyperlink
к этому ресурсу.
<... >
Атрибут
download
, если он присутствует, указывает на то, что автор намеревается гиперссылку, которая будет использоваться для загрузки ресурса. Атрибут может имеют значение; значение, если оно есть, указывает имя файла по умолчанию, которое автор рекомендует использовать при маркировке ресурса в локальном файле система.
Итак, все, что вам нужно сделать, это добавить атрибут в вашу гиперссылку, а браузеры, которые его поддерживают, поймут, что содержимое необходимо загрузить:
<a href="http://example.com/media.mp3" download>Download Your File</a>
Вы даже можете предложить другое имя для загруженного файла, установив значение атрибута:
<a href="http://example.com/media.mp3" download="check this out.mp3">Download Your File</a>
Дополнительная информация и демонстрации:
- Загрузка ресурсов в HTML5: a [скачать] (HTML5 Rocks)
- HTML5 скачать Атрибут (Дэвид Уолш)
Поддержка браузера: caniuse.com
Загрузка сгенерированного контента
Вы даже можете создать ссылку, которая будет загружать созданный вами контент, если есть способ получить URI с кодировкой базы данных:
<a href="data:application/octet-stream;base64,YOUR_ENCODED_DATA" download="song.mp3">Download</a>
Подробнее о сохранении сгенерированного контента см. в этой статье Эли Грей: