【发布时间】:2017-12-07 01:15:09
【问题描述】:
文件输入为 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 发送到我的服务器,而不管浏览器如何。
对此有一个后续问题:如何协调这种行为?
【问题讨论】:
-
小提琴使用了你想up加载的文件?
-
为什么需要这个 mimeType ?浏览器只检查扩展名来设置它,任何带有扩展名
.wav的文件都将其type设置为其中之一。如果你想检查它是否是一个真正的audio/wav文件,然后检查它的幻数:52 49 46 46。 (let r = new FileReader(); r.onload = e => console.log(new DataView(r.result).getUint32(0).toString(16) === '52494646'); r.readAsArrayBuffer(file.slice(0,8));}) -
虽然我知道您编辑的答案(只需将
console.log更改为if并在我的第一条评论中关闭)后添加file = new Blob([file], 'audio/wav')),我不这么认为在某人(完全正确)回答了以前版本的问题后编辑您的问题是正确的。 -
@Kaiido 你是对的,我想我还是会接受这个答案。但是这个答案仍然存在误解(即使没有编辑)。所以恕我直言,澄清是强制性的。无论如何,他对您的澄清 cmets 的回答都是我想要的,所以谢谢!
-
ps:我有一个错字:
file = new Blob([file], {type:'audio/wav'})
标签: javascript google-chrome firefox mime-types wav