在浏览器中停止stream式传输mp3文件

我有一个阿帕奇服务器上的MP3。 我希望在用户访问链接时将其作为文件下载。 相反,quicktime,或谷歌媒体播放器将尝试和stream媒体播放器。

有没有解决这个标题? 或者是唯一的select,所以“点击右键另存为”?

编辑这里是我的标题。 Safari已经停止了stream媒体播放,但是Chrome会这样做。 Chrome似乎忽略了这一点:

我可以看到标题已被正确更改:

Date Wed, 04 Aug 2010 00:14:35 GMT Server Apache/2.2.13 (Unix) mod_ssl/2.2.13 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.11 Last-Modified Tue, 03 Aug 2010 04:37:01 GMT Etag "2bbd692-79597d-48ce3de3f5540" Accept-Ranges bytes Content-Length 7952765 Content-Disposition attachment Keep-Alive timeout=5, max=100 Connection Keep-Alive Content-Type audio/mpeg 

标题中是否还有其他内容会导致此问题?

编辑做一些研究,我发现这一点: http : //www.google.com/support/forum/p/Chrome/thread?tid= 76de4f53f43f03d3& hl= en看起来像可能会有一个铬的错误,防止下载。

您想要将Content-Disposition响应头设置为“attachment”,也可能是“filename”字段。

例:

 Content-Disposition: attachment; filename=foo.mp3; 

要直接在Apache中完成此操作,请尝试在httpd.conf.htaccess文件中添加以下内容:

 <FilesMatch "\.(?i:mp3)$"> ForceType audio/mpeg SetEnvIf Request_URI "^.*/?([^/]*)$" FILENAME=$1 Header set Content-Disposition "attachment; filename=%{FILENAME}e" UnsetEnv FILENAME </FilesMatch> 

编辑:

向Apache配置示例添加了文件名字段,从此答案借用。 但是,您应该了解由非US-ASCII字符的文件名引起的潜在问题:请参阅此问题 。

或者,你可以使用一个通用的常量文件名(因为你已经知道了扩展名),就像song.mp3一样,但这可能不是你的选择。

第三个选择是创建一个脚本来提供这些MP3,这些脚本可以设置标题,并负责从文件名中去除不需要的字符。