gpt4 book ai didi

javascript - 为什么 WAV 格式在不同的浏览器中没有相同的 mimetype?

转载 作者:行者123 更新时间:2023-11-30 15:12:39 24 4
gpt4 key购买 nike

文件输入为 chrome 或 firefox 中的同一文件提供不同的 Mimetype。我有一个要上传的 wav 文件,chrome 说它是 audio/wav 而 firefox 检测到 audio/x-wav

我知道这两个 mimetype 非常相似(x- 代表 non-standard ),但为什么在这种情况下它们的处理方式不同?

这里有一个 fiddle 来说明这一点: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 具有正确的 JPEG mime 类型,浏览器将正确地将其呈现为 JPEG。它不关心文件扩展名。

但是,如果您在本地文件系统上,则文件扩展名是相关的。如果您打开一个名为 foo.wav 的文件,您的操作系统会根据扩展名 .wav 决定打开某个音频播放器。

当选择一个文件将其上传到 Internet 时,bowser 会执行一项非常重要的任务:它会为文件扩展名选择 mime 类型。为此,每个浏览器都有一个映射表,将已知文件扩展名映射到 mime 类型。好吧,这里有一个问题:这个表在不同的浏览器上显然是不一样的。这就是为什么您会在 fiddle 中得到不同的结果。

有些浏览器将 .wav 映射到 audio/wav,有些浏览器将映射到 audio/x-wav


因此,如果您的测试用例正在下载一个 mime 类型为 audio.wav 的文件,然后使用您发布的 fiddle 检查它的 mime 类型,那么您不会检查服务器发送的 mime 类型当您下载文件时,您的浏览器只会猜测文件扩展名的 MIME 类型。

在这两种情况下,如果您发送了一个 MIME 类型为 audio/wavaudio/x-wav 的文件 foo.wav您磁盘上的文件将是相同的,以后将无法知道您的服务器为该文件发送的 MIME 类型是什么。

您的浏览器在下载过程中唯一可以做的就是更改文件扩展名。例如,如果您发送了一个文件 http://example.com/foo 并且它的 mime 类型为 audio/wav 浏览器可能会将其重命名为 foo.wav.

关于javascript - 为什么 WAV 格式在不同的浏览器中没有相同的 mimetype?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44891157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com