在浏览器中停止流媒体播放mp3文件

时间:2010-08-04 00:02:26

标签: apache browser download mp3

我在apache服务器上有一个mp3。我希望在用户访问链接时将其下载为文件。相反,quicktime或google chromes媒体播放器会尝试流式播放。

对标题有解决方法吗?或者是唯一的选择,所以'右键单击另存为'?

修改这是我的标题。 Safari已经停止了流媒体,但是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 看起来Chrome中可能存在一个错误,导致无法下载。

1 个答案:

答案 0 :(得分:12)

您想将Content-Disposition响应标头设置为“附件”,也可能是“文件名”字段。

示例:

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配置示例添加了文件名字段,借用this answer。但是,您应该知道由其中包含非US-ASCII字符的文件名引起的潜在问题:请参阅this question

或者,您可以使用通用常量文件名(因为您已经知道扩展名),例如song.mp3,但根据您的具体情况,这可能不是一个选项。

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