Uly*_* BN 4 javascript firefox google-chrome wav mime-types
文件输入在 chrome 或 firefox 中为同一文件提供不同的 Mimetype。我有一个要上传的 wav 文件,chrome 说它是,audio/wav而 firefox 检测到audio/x-wav。
我知道这两个 mimetype 非常相似(x-代表non-standard),但是为什么在这种情况下它们的处理方式不同?
这里有一个小提琴来说明这一点:https : //jsfiddle.net/r9ae0zfd/。这是我用于此示例的 WAV 文件:https : //freesound.org/people/zagi2/sounds/391828/。
最后,我想要的行为是.wav从我的计算机(客户端)获取文件并通过 HTTP 将其发送到我的服务器,audio/wav而不管浏览器如何。
对此有一个后续问题:如何协调这种行为?
重要的是要了解,当您将文件存储在磁盘上时,MIME 类型不会存储在该类型中。这就是为什么我们有像.jpg或这样的文件扩展名.wav。在通过 HTTP 的互联网中,我们不需要它们。我们可以有一个 URL,http://example.com/foo.wav但发送一个带有正确 JPEG mime 类型的 JPEG,浏览器会正确地将它呈现为 JPEG。它不关心文件扩展名。
但是,如果您在本地文件系统上,则文件扩展名是相关的。如果您打开一个名为foo.wav您的操作系统的文件,则由扩展名决定.wav打开某个音频播放器。
选择将文件上传到Internet时,Bowser执行非简单任务:它选择文件扩展名的MIME类型。为此,每个浏览器都有一个映射表,将已知的文件扩展名映射到 MIME 类型。嗯,这里有一个问题:这个表在不同的浏览器上显然是不一样的。所以这就是为什么你在你的小提琴中得到不同的结果。
有些浏览器映射.wav到audio/wav,有些浏览器映射到audio/x-wav。
因此,如果您的测试用例正在下载具有 mime 类型的文件,audio.wav然后使用您发布的小提琴检查其 mime 类型,则您不会检查下载文件时服务器发送的 mime 类型,而只会猜测 mime 类型用于浏览器的文件扩展名。
在这两种情况下,如果您发送的文件foo.wav具有 mime 类型,audio/wav或者audio/x-wav您磁盘上的文件将是相同的,那么以后就不可能知道您的服务器为该文件发送的 mime 类型是什么。
您的浏览器在下载过程中唯一能做的就是更改文件扩展名。例如,如果您发送了一个文件http://example.com/foo并且它具有audio/wavmime 类型,则浏览器可能会将其重命名为foo.wav.
| 归档时间: |
|
| 查看次数: |
6531 次 |
| 最近记录: |