确定未知的内容类型与HTML5文件API(Determining unknown content-t

2019-07-30 02:29发布

我通过一个小文件上传脚本(学习经验)工作,我注意到,选择当Microsoft Office相关的文件( .doc.docx为例)的文件对象不具有特定类型:

对于.doc文件我所预料的类型是"application/msword" ,沿着思想的.docx的同一列火车是"application/vnd.openxmlformats-officedocument.wordprocessingml.document"

在情况下,当无法确定类型是正确的行动过程看文件扩展名和匹配的“预期”的内容/ MIME类型?

示例脚本:

<div id="fileUpload">
    <input type="file" id="fileElem" style="display:none;" onchange="handleFiles(this.files)"/>
    <a href="#" id="fileSelect">Select some files</a>
</div>

<script type="text/javascript">
    var fileSelect = document.getElementById("fileSelect"),
        fileElem = document.getElementById("fileElem");

    fileSelect.addEventListener("click", function (e) {

        if (fileElem) {
            fileElem.click();
        }

        e.preventDefault();
    }, false);

    function handleFiles(files) {
        console.log(files);
    }

</script>

Answer 1:

按照W3文件阿比草拟类型attributte:

在表示斑点的媒体类型下壳体的ASCII编码的字符串,表示为一个RFC2046 MIME类型[RFC2046]。 在获取时,符合用户代理应返回MIME类型的斑点,如果它是已知的。 如果符合用户代理不能确定斑的媒体类型,他们必须返回空字符串。 字符串是一个有效的MIME类型,如果它RFC 2616的3.7节“媒体类型”中定义的媒体类型匹配的令牌

所以基本上,如果它不是一个有效的或媒体类型HTTP / 1.1这将是空的。 无论如何。

是啊,你应该这样做:

if(type === "") {
  //Get extension and match to a MIME-types list. (http://www.htmlquick.com/es/reference/mime-types.html)
}


Answer 2:

与接受的答案一致,但作为一个供参考,以谁卡住了,为什么这是发生了一些,而不是其他的特定文件类型的人(比如我),要知道,在Windows中,如果MIME没有适当地设定用户注册表,你会得到空字符串。 这是一个有趣的几个小时:)



文章来源: Determining unknown content-types with the Html5 file api