【问题标题】:input[type = "file"], different mime types in different OS and browsersinput[type = "file"],不同操作系统和浏览器中的不同 mime 类型
【发布时间】:2015-03-12 07:48:24
【问题描述】:

在 chrome 上上传 csv 文件时,我没有得到任何类型(在上传 .pdf、.jpg 等其他文件时,我得到了他们的类型)。此问题仅在 Window 的 chrome 浏览器中出现。在其他浏览器和操作系统中它工作正常。我正在使用最新的 chrome 版本,示例代码是:

<!DOCTYPE html>
<html>
   <body onload="myFunction()">
       <input type="file" id="myFile" onchange="myFunction()">
       <p id="demo"></p>
     
       <script>
           function myFunction(){
               var x = document.getElementById("myFile");
               var type = x.files[0].type;
               
               document.getElementById("demo").innerHTML = 'TYPE : '+type;
           }
       </script>
   </body>
</html>

我的 Plunker 示例是 here

【问题讨论】:

    标签: html google-chrome file-upload


    【解决方案1】:

    CSV 文件有多种可能的 MIME 类型,具体取决于用户的操作系统和浏览器版本。因此,您需要创建一个可能的 mime 类型数组并对照它检查文件类型。

    可能的数组:

    var mimes = ['text/csv',
        'text/plain',
        'application/csv',
        'text/comma-separated-values',
        'application/excel',
        'application/vnd.ms-excel',
        'application/vnd.msexcel',
        'text/anytext',
        'application/octet-stream',
        'application/txt']
    

    【讨论】:

    • 感谢您的回答#SuperHornet。但是这些 mime 类型用于验证文件类型格式,但是我没有得到文件类型。它给了我空字符串。请参阅上面的 plunker 示例。
    • 我刚刚在 Chrome Win7 中测试了你的代码,它不为空并返回 'application/vnd.ms-excel' @Abhishek
    • 您是否测试过 .csv 文件?问题在于 .csv 格式
    • @Abhishek,是的,我做到了。
    • 好的,谢谢,我认为这个问题发生在我的电脑上,当我上传 .csv 文件时它不显示文件类型
    猜你喜欢
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 2012-04-05
    • 2012-09-21
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多