我在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中可能存在一个错误,导致无法下载。
答案 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,这些脚本可以设置标题并负责从文件名中删除不需要的字符。