慕标琳琳

看来这个问题还是比较难解决的,那我就自己来解决一下吧既然直接读取file.type是空字符串,那就只能从文件流里面读取文件头信息了。参考题中的链接方案,这里优化了一下function checkFileType(type, file, back) {    /**     * type png jpg mp4 ...     * file input.change=> this.files[0]     * back callback(boolean)     */    // http://www.garykessler.net/library/file_sigs.html    var args = arguments;    if (args.length != 3) {        back(0);    }    var type = args[0]; // type = '(png|jpg)' , 'png'    var file = args[1];    var back = typeof args[2] == 'function' ? args[2] : function() {};    if (file.type == '') {        // 如果系统无法获取文件类型,则读取二进制流,对二进制进行解析文件类型        var imgType = [            'ff d8 ff', //jpg            '89 50 4e', //png            '0 0 0 14 66 74 79 70 69 73 6F 6D', //mp4            '0 0 0 18 66 74 79 70 33 67 70 35', //mp4            '0 0 0 0 66 74 79 70 33 67 70 35', //mp4            '0 0 0 0 66 74 79 70 4D 53 4E 56', //mp4            '0 0 0 0 66 74 79 70 69 73 6F 6D', //mp4            '0 0 0 18 66 74 79 70 6D 70 34 32', //m4v            '0 0 0 0 66 74 79 70 6D 70 34 32', //m4v            '0 0 0 14 66 74 79 70 71 74 20 20', //mov            '0 0 0 0 66 74 79 70 71 74 20 20', //mov            '0 0 0 0 6D 6F 6F 76', //mov            '4F 67 67 53 0 02', //ogg            '1A 45 DF A3', //ogg        ];        var typeName = [            'jpg',            'png',            'mp4',            'mp4',            'mp4',            'mp4',            'mp4',            'm4v',            'm4v',            'mov',            'mov',            'mov',            'ogg',            'ogg',        ];        var sliceSize = /png|jpg|jpeg/.test(type) ? 3 : 12;        var reader = new FileReader();        reader.readAsArrayBuffer(file);        reader.addEventListener("load", function(e) {            var slice = e.target.result.slice(0, sliceSize);            reader = null;            if (slice && slice.byteLength == sliceSize) {                var view = new Uint8Array(slice);                var arr = [];                view.forEach(function(v) {                    arr.push(v.toString(16));                });                view = null;                console.log(arr.join(' '));                var idx = arr.join(' ').indexOf(imgType);                if (idx > -1) {                    back(typeName[idx]);                    console.log(typeName[idx]);                } else {                    back(false);                }            } else {                back(false);            }        });    } else {        var type = file.name.match(/\.(\w+)$/)[1];        back(type);    }}使用方法:input.addEventListener(function(){    var file = this.files[0];    if(file.type==''){        // 第一个参数支持单类型,或多类型,多类型时用竖线分隔,用于生成正则式        checkFileType('(png|jpg|jpeg|mp4|mov|m4v|ogg)',file,function(fileType){            console.log(fileType);            //'png'        });        checkFileType('jpg',file,function(fileType){            console.log(fileType);            //false        });    }});只做了对png,jpg,jpeg,mp4,mov,m4v,ogg几个常用格式判断,其他文件类型的文件头信息,可以查看这里:http://www.garykessler.net/li...

安卓使用html文件遍历,安卓手机中使用html的input file,获取不到文件类型和文件名...相关推荐

  1. 如何在手机端从多个Excel文件多个Sheet中搜索某一内容,多个excel文件批量查找

    如何在手机端从多个Excel文件多个Sheet中搜索某一内容,多个excel文件批量查找 今天介绍一个在线工具:e.anyoupin.cn 比如: 多个年度的项目信息,每年一张工作簿.现在需要查找某些 ...

  2. html只允许上传xlsx,input file限制上传文件类型的方法

    在前端html中,上传文件时,一般都是用到 type 属性值为 file 的 input 标签,但在默认情况下,file 类型的 input 标签是不限制选择本地文件的类型的,那么本篇博文,飞鸟慕鱼就 ...

  3. input file限制上传文件类型的方法

    在前端html中,上传文件时,一般都是用到 type 属性值为 file 的 input 标签,但在默认情况下,file 类型的 input 标签是不限制选择本地文件的类型的. input file ...

  4. 将input file的选择的文件清空的两种解决方案

    将input file的选择的文件清空的两种解决方案 参考文章: (1)将input file的选择的文件清空的两种解决方案 (2)https://www.cnblogs.com/wangxueyin ...

  5. 基于安卓的备忘录文件加密_手机里面还隐藏一个扫描仪功能,以后扫描文件,都不用去复印店了...

    手机里面还隐藏一个扫描仪功能,以后扫描文件,都不用去复印店了 办公党肯定深有体会,经常需要扫描文档,一般办公室都有扫描仪,如果在家肯定要去附近的复印店进行扫描. 其实这些方法或多或少都很麻烦,因为现在 ...

  6. oracle 表导出pdm文件,如何将数据库中已有表导入到powerDesigner生成pdm文件

    1.create new PDM: 2.select database menu; 3.click Reverse  Engineer database : 4.then choose your sc ...

  7. 计算机上的word文件传到手机,【1人回答】电脑上的Word文件怎么传到苹果手机上?-3D溜溜网...

    回答: 1.将手机连接电脑: 2.安装好手机驱动: 3.关闭USB调试模式,打开USB数据存储: 4.将文件复制至手机: 5.打开WPS-选择打开刚刚复制至手机的文档. 操作步骤如下: 1.在itun ...

  8. linux 校验文件生成,在Linux中了解如何使用MD5校验和生成和验证文件

    校验和是用作在数据正确数字的总和,其可以稍后用于存储或传输期间检测数据中的错误的一个数字.MD5( 消息摘要5)的款项可以用作校验和,以验证文件或字符串在Linux的文件系统 . MD5校验和是128 ...

  9. ios打不开html文件,在DocumentsWeb目录中打开UIWebview时,ios-css和js在html文件中无法链接...

    显然,以编程方式加载HTML文件时,文档库与应用程序的Documents目录不同. 查看HTML中的BASE元素,它位于< head>内.元件: gt; Meta charset=&quo ...

  10. 服务器拒绝了您发送离线文件的请求,电脑中QQ提示服务器拒绝了您发送离线文件如何解决...

    QQ是很多用户都会使用到的一款沟通软件,其具有非常强大的功能,QQ离线文件发送功能就是其中一种.不过,最近一些QQ用户在发送离线文件时,却遇到了QQ离线文件发送不了,提示"服务器拒绝了您发送 ...

最新文章

  1. python3 +改进HTMLTestRunner.py 测试报告显示
  2. DIV层+CSS实现锁屏
  3. 当Java遇上机密计算,又一段奇幻之旅开始了!
  4. Mac Supervisor 管理进程
  5. 小鹏汽车窃密特斯拉实锤?前员工回应:确实上传过30万份Autopilot源码
  6. excel表格导入功能
  7. 如何更新计算机的flash player,如何在win7电脑中Adobe Flash Player自动更新?
  8. java简历的专业技能,java程序员专业技能简历范文
  9. 本来都对象棋失去兴趣了, 是特殊的原因让我又开始从侧面搞象棋方面的擦边的游戏...
  10. java微信退款接口demo_微信公众号接口开发----退款详解
  11. 计算机表格怎么算加减,excel表格数据的加减-excel表格怎么自动计算加减
  12. 阿里云认证未来网络学院ACE公开课——30分钟掌握ACE考试通关攻略
  13. 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323
  14. 【BZOJ4199】品酒大会(NOI2015)-后缀数组+并查集
  15. 2021.02.02刷题总结
  16. P1008 [NOIP1998 普及组] 三连击
  17. Etcd——大厂面试问题集合
  18. windows可以ping通linux虚拟机的ip,但是ping不通主机名称解决方案
  19. python pandas 数据分析-读取csv excel
  20. gets() 与puts()的用法

热门文章

  1. 1 操作系统安全加固
  2. LR监控linux系统资源
  3. 读源码Apache-commons-lang3-3.1(一)
  4. DDK nmake : error 解决方法
  5. 操作两个表的SQL语句,可用在数据源中
  6. linux图标大全——这些你认识多少?
  7. 23. Linux 主机上的用户信息传递
  8. 1. Symfony 2 --- 简介
  9. Android开发7——android database CursorIndexOutOfBoundsException
  10. [2019杭电多校第五场][hdu6630]permutation 2