强制链接到mp3文件以下载/另存为
但是对于安装了Apple Quicktime的许多用户来说,它会打开mp3文件,而不是在点击链接时“保存”它们。
您是否可以强制浏览器保存链接而不是使用浏览器首选项?
我可以使用JavaScript或C#.NET,如果可能的话,我正在寻找一个简单的解决方案。
您需要设置一个http标题,并将“Content-Disposition”设置为“attachment”。 这将强制浏览器弹出保存对话框。 873207在C#中有一个干净的方法。
但是 ,像Pax说的那样,你可能不应该默认这样做。 一个很好的方法是提供文件的正常链接(你正在这样做的方式),并在它旁边提供强制保存对话框的辅助链接。 这样你就可以让“不太有天赋”的用户进行简单的点击保存操作,并让其他所有用户通过mp3做他们想要的任何事情。
这是一个相当过时的问题,我不确定这样做是否存在任何问题,但我最近遇到了一个问题,并认为我发布了最终用作解决方案的内容。
将此文件保存为与音乐相同的文件夹中的php文件(例如downloadmusicfile.php):
0) { die('This should not happen.'); }; $len = filesize($filename); header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Cache-Control: public'); header('Content-Description: File Transfer'); header('Content-Type: application/force-download'); header('Content-Disposition: attachment; filename='.$filename); header('Content-Transfer-Encoding: binary'); header('Content-Length: '.$len); readfile($filename); } else { die('No file specified.'); }; ?>
然后链接到这样的文件:
Link Name
当用户单击/左键单击下载链接时,这会强制“另存为”框。
只需在页面中添加Content-Disposition标题即可!
这是一个简单的.htaccess规则:
Header set Content-Disposition attachment; filename=downloaded.mp3
但缺点是您下载的文件在“另存为”对话框中具有相同的名称。 这可能没有文件名部分,但我还没有测试过。 (虽然我没有测试其余部分……; P)
编辑:此外,如果您有可用的服务器端脚本,您可以使用它来获取文件的名称并设置Content-Disposition标头。
绝对强制它是不可能的,但您可以尝试将该行添加到您的apache配置中:
AddType application/random-fake-type .mp3
我的理解是,IE查看请求并尝试猜测MIME类型,因此上述解决方法将无法正常工作。 您也可以编写一个脚本来处理这个问题,就像这个类似的PHP脚本一样。
我认为你不能轻易做到这一点。 此外,你不应该这样做。 该机器属于用户,如果他们喜欢流式传输MP3而不是下载它们,那就是他们的决定。
我自己的解决方案是提供一个链接,让人们抱怨他们是流式而非下载(好吧,抱怨任何事情 ,真的)并让社区(包括你自己)提供解决方案。
然后,如果有人说它似乎总是玩而不是下载,你可以和他们一起弄清楚他们正在使用Firefox和QuickTime并告诉他们他们可以右键单击 – 另存为或重新配置Firefox。
我会说有一些方法可以实现这一点,例如更改发送的MIME类型或文件名,但我的评论应该是在用户控制之下。 无论如何,确定的用户可以非常轻松地重新配置他们的浏览器以流式传输您决定使用的任何MIME类型,因此您仍然无法保证它。