MP3下载响应的内容类型

54
我创建了一个简单的HTTP服务器,允许用户下载文件。但是对于MP3文件似乎无法正常工作。当前的内容类型为"application/misc"。为了使其适用于MP3文件,我尝试使用"application/mp3""application/data""application/mpeg"
什么才是针对于MP3或音频文件下载的正确的内容类型,并且是否缺少其他标头?
编辑:该文件应自动开始下载而不是提示用户将其保存在某个位置。

这个问题实际上包含了两个之前提出的问题:应该使用哪种MIME类型来处理mp3文件如何使用PHP强制下载文件。至于保存对话框,这是不在您控制范围内的。 - user
7个回答

91

尝试 "Content-Type: audio/mpeg"

更新

为了鼓励浏览器下载mp3而不是流媒体,请执行以下操作

Content-Disposition: filename="music.mp3"'


是的,我也尝试过那个,但它会开始流式传输。我想让文件被下载。 - Vihaan Verma
你是否设置了超过1个内容类型头? - jamjam
目前我只使用了一个标题,即Content-Type。我猜Content-Disposition标题会提示用户保存文件。我需要文件自动开始下载。 - Vihaan Verma
我的mp3已经下载了,但现在它的大小为零KB。有什么想法吗?服务器上的文件大小为3MB,所以应该可以工作?无论如何,“文件名”如何找到文件? - trainoasis
4
下载文件的正确标头为:Content-Disposition: attachment; filename="my-file.mp3" - AndreasPizsa

11
.mp3    audio/mpeg3
.mp3    audio/x-mpeg-3
.mp3    video/mpeg
.mp3    video/x-mpeg

使用Content-Disposition: attachment...强制出现下载框,而不是需要右键单击 -> 另存为。


我也见过 audio/mpeg - Flimm

3

经过大量研究,我找到了一些资源(其中一些在SO上),这些资源导致了这个解决方案。 这是最具跨设备兼容性的解决方案,并解决了许多问题,特别是与Android设备相关的问题(显然有很多问题)。

Content-Disposition:attachment; filename="my_mp3_filename.MP3"

请注意大写扩展名。那是很重要的。


1
尝试以下内容类型,它对我起作用了。
"audio/mpeg3;audio/x-mpeg-3;video/mpeg;video/x-mpeg;text/xml"

1

对于我来说,使用Content-Type "application/force-download"解决了问题。


2
浏览器不知道如何内联显示该内容类型,因此用户必须下载它(并决定哪个应用程序适合播放它)。这与执行以下操作相同:Content-Type: application/garbage - Matt

0
要实现下载而不是流式传输,请尝试使用以下代码: 'Content-Disposition': 'attachment; filename="name.mp3"'

0

将"content-disposition"设置为"attachment"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接