我试图在将文件添加到基本 HTML 文件输入时获取文件/mime 类型。
我的基本 HTML:
<form method="post" enctype="multipart/form-data">
<div>
<label for="file">Upload an MKV file:</label>
<input type="file" id="file" name="file" multiple>
</div>
</form>
我的 JavaScript:
var control = document.getElementById("file");
control.addEventListener("change", function(event) {
var files = control.files;
for (var i = 0; i < files.length; i++) {
console.log("Filename: " + files[i].name);
console.log("Type: " + files[i].type);
}
}, false);
工作示例 https://jsfiddle.net/3cdjyrsL/
例如,添加 MP4 时,控制台会输出以下内容:
Filename: myvideo.mp4
Type: video/mp4
虽然添加 MKV 文件时,控制台输出类型为空,如下所示:
Filename: myvideo.mkv
Type:
经过进一步研究,我发现MKV文件的官方mimetype是video/x-matroska
。所以我尝试添加accept="video/*"
到文件输入。这允许将所有视频类型添加到输入中besidesMKV 文件,这很奇怪。
那么为什么我的文件输入无法检测MKV文件的文件类型呢?
“MKV 文件的官方 mimetype 是 video/x-matroska”
不幸的是,事实并非如此。IANA https://www.iana.org/assignments/media-types/media-types.xhtml#video仍未在其官方 MIME 类型列表中认可它。
现在,在某些浏览器+操作系统配置中您可能实际上拥有它,因为type
浏览器的检查相当宽松,通常仅检查扩展名和 MIME 已知扩展名的映射。有些浏览器本身没有这样的列表,因此将使用操作系统列表,您的用户可以控制该列表。
但就我而言(MacO),浏览器似乎除了空字符串之外没有显示任何其他内容......
Firefox 实际上有一个关于它的悬而未决的问题。 https://bugzilla.mozilla.org/show_bug.cgi?id=1451786
但是,您可以通过在您的应用程序中显式设置扩展名来解决该问题accept
属性:
<input type="file" accept="video/*,.mkv">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)