我在 apache 服务器上有一个 mp3。我希望当用户访问链接时将其作为文件下载。相反,quicktime 或 google chrome 媒体播放器将尝试传输它。
有没有解决这个问题的标题?或者是唯一的选项“右键另存为”?
Edit这是我的标题。 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
标题中是否还有其他内容会导致此问题?
Edit做了一些研究,我发现了这一点:看来 Chrome 中可能存在错误,导致无法下载。
您想要设置Content-Disposition http://en.wikipedia.org/wiki/MIME#Content-Disposition“附件”的响应标头,也可能是“文件名”字段。
Example:
Content-Disposition: attachment; filename=foo.mp3;
要直接在 Apache 中完成此操作,请尝试将以下内容放入您的httpd.conf
or .htaccess
file:
<FilesMatch "\.(?i:mp3)$">
ForceType audio/mpeg
SetEnvIf Request_URI "^.*/?([^/]*)$" FILENAME=$1
Header set Content-Disposition "attachment; filename=%{FILENAME}e"
UnsetEnv FILENAME
</FilesMatch>
EDIT:
在 Apache 配置示例中添加了文件名字段,借用自这个答案 https://serverfault.com/questions/101948/how-to-send-content-disposition-headers-in-apache-for-files/101966#101966。但是,您应该注意由包含非 US-ASCII 字符的文件名引起的潜在问题:请参阅这个问题 https://stackoverflow.com/questions/93551/how-to-encode-the-filename-parameter-of-content-disposition-header-in-http.
或者,您可以使用通用常量文件名(因为您已经知道扩展名),例如song.mp3
,但这可能不是一个选择,具体取决于您的情况。
第三种选择是创建一个脚本来服务这些 MP3,它可以设置标头并负责从文件名中删除不需要的字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)