Safari和下载文件问题

时间:2010-02-13 00:01:03

标签: asp.net windows macos safari

我有一个网站,我让用户下载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机器。如何解决此问题?

2 个答案:

答案 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)。