我在播放列表中有一些MP3文件,每个文件都在其旁边有一个链接:
<a href="/music/track1.mp3"></a>
用户可以右键单击该链接并选择“下载链接文件”(或浏览器中的等效选项)。
我想要的是当用户点击链接(即标准左键单击)而不是通过“另存为”对话框时自动下载文件,而不是用户浏览器的默认下载文件夹。
实现这一目标的最简单方法是什么?
答案 0 :(得分:1)
您需要配置您的网络服务器以将Content-Disposition attachment
添加到HTTP标头。 Here是有关如何使用Apache执行此操作的说明。
正如Mitch Satchwell所说,您也可以使用服务器端语言来执行此操作,这些语言在足够低的级别上运行,因此您可以修改HTTP标头。
答案 1 :(得分:1)
使用服务器端语言,您可以设置Content-Disposition
标题以在用户单击链接时强制下载,但是您无法控制浏览器以及文件存储在用户计算机上的位置,取决于个人用户设置。
答案 2 :(得分:1)
如果您要下载的是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文件。
答案 3 :(得分:0)
如果用户将浏览器设置为提示所有下载,我认为这不可能。
答案 4 :(得分:0)
这会在所有最近的浏览器中引发许多危险信号
文件下载通过保存功能进行管理,以便在下载文件时保证安全性。
如果您可以下载onclick到文件夹,那么无需点击即可停止下载的文件?
但是,如果您仍想实现此目的,则必须使用第三方组件,如flash或activeX,但这些组件将首先要求用户授予您特权(信任)。
答案 5 :(得分:0)
您需要控制执行此操作的请求。根据您的Web服务器技术,有多种方法可以实现。你想要做的是将'Content-Disposition'HTTP标头设置为'attachment;文件= somefile”。这告诉浏览器下载此文件而不是“打开”它(如果可以)。像c#这样的例子就是:
response.AddHeader("Content-Disposition", "attachment; filename=downloadThisAudio.mp3"));
但是你可以通过IIS和Apache中的配置来实现这一点。有点谷歌搜索我认为你可以找到如何只为MP3设置此标头,甚至有条件(如每个目录,或存在查询参数时)。