с помощью простого файла HTML и JS, как я могу заставить ссылку на mp3 скачать вместо того, чтобы просто играть? - PullRequest
5 голосов
/ 03 декабря 2008

У меня есть ссылка на медиафайл, такой как mp3, и я хочу, чтобы он загружался, когда пользователь нажимал на него, вместо того, чтобы просто воспроизвести файл. страница, которую я имею в виду, является простой статической HTML-страницей.

есть идеи?

Ответы [ 8 ]

5 голосов
/ 03 декабря 2008

Чтобы это произошло, перед отправкой файла необходимо отправить заголовок с заголовком Content-disposition: attachment; filename=fname.ext на вашем любимом языке.

Не зная специфики, например, какой язык и какой контроль вы имеете над конфигурацией вашего сервера, я не могу дать вам более подробные инструкции. Однако вы не можете сделать это только с помощью html и javascript.

3 голосов
/ 03 декабря 2008

Это далеко, я знаю, что это невозможно. Без возможности установить соответствующие заголовки браузер решит, что делать с файлом, который обычно воспроизводится, вам придется попросить пользователей нажать правую кнопку мыши + сохранить как. Если у вас есть доступ к серверу, довольно просто установить заголовки в php или apache, используя .htacces

<FilesMatch "\.(?i:mp3)$">
  ForceType audio/mpeg
  Header set Content-Disposition attachment
</FilesMatch>

Или браузер не распознает, что это MP3, и даже не попытается открыть его:

<FilesMatch "\.(?i:mp3)$">
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</FilesMatch>

Для настройки заголовка php см .: http://nl.php.net/header

0 голосов
/ 22 декабря 2014

Если вы хотите, чтобы их принудительно загружали по ссылке, добавьте атрибут download к элементу ссылки (необязательное имя файла):

<a href="file.mp3" download="Song_Name.mp3">Download</a>

Если вы хотите, чтобы пользователи принудительно загружали файл при посещении URL-адреса, вам не повезло. Это невозможно только с помощью HTML и JS. Вы должны иметь доступ к серверу, чтобы влиять на заголовки файла, прежде чем он будет загружен в браузер, как говорили другие.

0 голосов
/ 22 декабря 2014
<a href="linkto.mp3" download>Download MP3 File </a>
0 голосов
/ 04 декабря 2008

С помощью Google я нашел одну ветку с JS. используется для сохранения файлов. Проверьте это (опубликовано в 2003 году, сам не проверял).

Лучшее решение было бы использовать php, asp или любой другой язык, поддерживаемый вашим сервером, чтобы это исправить; -)

0 голосов
/ 04 декабря 2008

Хотя это не решение, измените расширение файла на любое другое, кроме MP3. И попросите пользователя переименовать его после загрузки.

0 голосов
/ 03 декабря 2008

Клиентская часть JavaScript не может этого достичь (ближайшая функциональность - document.execCommand('SaveAs'), которая просто сохраняет всю HTML-страницу).

0 голосов
/ 03 декабря 2008

Согласитесь со smazurov, и в конечном итоге вы не сможете контролировать презентацию ваших медиа, хотя Content-disposition может сделать это за вас. Вот RFC для рассматриваемого заголовка .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...