ChatGPT解决这个技术问题 Extra ChatGPT

我应该为 mp3 使用哪种 mime 类型

我正在尝试决定选择哪种 mime 类型来返回 mp3 数据(由 php 提供)

根据这个 mime 类型列表:http://www.webmaster-toolkit.com/mime-types.shtml

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

这些有什么区别,我应该使用哪个?


C
Community

最好的办法是使用 RFC defined mime 类型 audio/mpeg


Chrome 26 更了解并使用 audio/mp3... 看图。
这是Chromium bug,他今天刚满 3 岁。我相信他会多呆几年,所以微笑着祝他生日快乐。 :)
@pollaris 没有多种 mime 类型,因为文件只有一种类型。理想情况下,如果您返回的是 mp3 文件,则返回 audio/mpeg;如果返回的是 wav 文件,则返回 audio/wav。如果您不想编写代码以返回实际的 mime 类型,则可以使用通用 application/octet-stream 来指示二进制文件,但是浏览器可能不会按照您期望的方式处理文件。
@jgillich - 你是对的。 6 年,现在可以骑自行车bugs.chromium.org/p/chromium/issues/detail?id=227004
已修复 Chrome 错误!不确定它何时会进入 Chrome。
E
Eugene Petakhin

我遇到了 mime 类型以及对少数文件类型进行测试的问题。看起来每个浏览器都会发送特定文件的 mime 类型的变体。我试图用开源 php 类上传 mp3 和 zip 文件,我发现:

火狐 (mp3): 音频/mpeg

火狐 (zip): 应用程序/zip

铬 (mp3):音频/mp3

Chrome (zip):应用程序/八位字节流

歌剧(mp3):音频/mp3

Opera (zip):应用程序/八位字节流

IE (mp3):音频/mpeg

IE (zip): application/x-zip-compressed

因此,如果您需要上传多种文件类型,最好进行一些测试,以便每个浏览器都可以上传文件并通过 mime 类型检查。


z
zessx

使用.mp3 audio/mpeg,这是我一直使用的。我猜其他人只是别名。


J
Johnny Zhao

您应该始终使用音频/mpeg,因为 firefox 无法播放音频/mpeg3 文件


Firefox 也不喜欢音频/mp3
C
Community

standard 方法是在您的 PHP header 函数中使用类似这样的 audio/mpeg ...

header('Content-Type: audio/mpeg');


g
garchompstomp

根据这个答案,mp3 文件有时会抛出奇怪的 mime 类型:https://stackoverflow.com/a/2755288/14482130

如果您正在执行某些用户验证,请不要像上面建议的那样允许“application/octet-stream”或“application/x-zip-compressed”,因为它们可能包含 .exe 或其他潜在危险文件。

为了验证 mime 类型何时给出假阴性,您可以按照此答案 https://stackoverflow.com/a/52570299/14482130 使用 flep 来完成验证。