我有一个网站,我让用户下载mp3文件。代码段(部分)如下:
Response.Clear();
Response.AppendHeader("Content-Disposition:", "attachment; filename=mike.mp3");
Response.AppendHeader("Content-Length", "1000");
Response.ContentType = "audio/mpeg3";
一位客户抱怨他无法在Mac 10.4.11上的Safari上下载此文件。 (它只是在页面上呈现mp3文件)所以,我下载了Safari for Windows,无法重新创建问题。那么,我想Safari for Windows和Safari for Mac之间存在差异?
我没有Mac机器。如何解决此问题?
答案 0 :(得分:3)
标题名称后面可能是冒号吗?
是的,当然不应该存在。
另外,MP3的正确MIME媒体类型是audio/mpeg
。这种类型涵盖了紧密相关的MPEG第1层,第2层(.mp2)和第3层(.mp3)格式(但不是MPEG-4 AAC,这是完全不同的。)
浏览器无法识别非标准(未注册IANA)audio/mpeg3
类型,因此任何人都会猜测他们将如何选择处理它们。不幸的是,它经常涉及一些令人诡异的内容嗅探猜测,当浏览器看到他们认为是一种(错误的)文件类型的虚假字符串时,这会导致非常不合适的结果。
答案 1 :(得分:0)
有趣。我没有asp.net,所以我创建了这个Python Web应用程序:
#!/usr/bin/env python
import werkzeug
@werkzeug.Request.application
def app(request):
f = open("audio.mp3")
r = werkzeug.Response(f, content_type="audio/mpeg3")
r.headers.add("Content-Disposition", "attachment; filename=mike.mp3")
r.headers.add("Content-Length", "1000")
return r
werkzeug.run_simple("localhost", 4000, app)
即使Content-Type(和Content-Length)错误,Safari也会下载该文件。我在Mac OS X 10.6.2上安装了Safari版本4.0.4(6531.21.10)。