将 MKV 文件添加到文件输入时,为什么没有返回文件类型?

2024-03-31

我试图在将文件添加到基本 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(使用前将#替换为@)

将 MKV 文件添加到文件输入时,为什么没有返回文件类型? 的相关文章

随机推荐