1

我在播放列表中有一些 MP3 文件,每个文件旁边都有一个链接,格式如下:

<a href="/music/track1.mp3"></a>

用户可以右键单击链接并选择“下载链接文件”(或浏览器中的等效选项)。

我想要的是当用户单击链接(即标准的左键单击)时自动下载文件,而不是通过“另存为”对话框,而是通过用户浏览器的默认下载文件夹。

实现这一目标的最简单方法是什么?

4

6 回答 6

2

如果您想要下载 mp3 文件而不是在同一个或另一个窗口中播放,只需在链接中添加一个“下载”属性,例如

<a href="www.mysite.com/uploads/mysong.mp3" download>download my song</a>

或者

<a href="www.mysite.com/uploads/mysong.mp3" download="filename.mp3">download my song</a>

“下载”属性是 HTML5 中“a”标签的新属性,最近的浏览器支持它。它也适用于其他文件类型,并且不限于 mp3 文件。

请参阅:关于下载属性的 w3 学校页面

于 2019-01-28T09:13:14.280 回答
1

您需要配置您的网络服务器以添加Content-Disposition attachment到 HTTP 标头。以下是有关如何使用 Apache 执行此操作的说明。

正如 Mitch Satchwell 所说,您也可以使用服务器端语言来执行此操作,这些语言在足够低的级别上运行,因此您可以修改 HTTP 标头。

于 2012-08-13T13:56:23.070 回答
1

使用服务器端语言,您可以设置Content-Disposition标题以在用户单击链接时强制下载,但是您无法控制浏览器以及文件在用户计算机上的存储位置,这取决于各个用户的设置。

于 2012-08-13T13:58:28.783 回答
0

如果用户已将浏览器设置为提示所有下载,我认为这是不可能的。

于 2012-08-13T13:55:10.717 回答
0

这将在所有最近的浏览器中引发许多危险信号。
文件下载通过另存为功能进行管理,以保证下载文件时的安全性。
如果您可以将 onclick 下载到一个文件夹,那么是什么阻止您在不点击的情况下进行下载?

但是,如果您仍想实现此目的,则必须使用诸如 flash 或 activeX 之类的第 3 方组件,但这些组件将首先要求用户授予您权限(信任)。

于 2012-08-13T13:56:44.807 回答
0

您需要控制执行此操作的请求。根据您的 Web 服务器技术,有多种方法可以完成。您要做的是将“Content-Disposition”HTTP 标头设置为“附件;文件=某个文件'。这告诉浏览器下载这个文件而不是“打开”它(如果可以的话)。类似 c# 的示例是:

response.AddHeader("Content-Disposition", "attachment; filename=downloadThisAudio.mp3"));

但是您可以通过在 IIS 和 Apache 中的配置来完成此操作。一些谷歌搜索我想你可以找到如何为 MP3 设置这个标题,甚至有条件地(比如每个目录,或者当查询参数存在时)。

于 2012-08-13T13:59:44.103 回答