zoukankan      html  css  js  c++  java
  • H5 input file上传图片验证

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>input_file验证</title>
    </head>
    <body>
        <input type="file" id="upload-file">
        <script>
            var upload = document.getElementById('upload-file');
    
            upload.addEventListener('change',changeHandler);
            function changeHandler(){
                fileValid(this, 2048, 'image', function () {
                    /*
                    * 用input——file上传文件,掉用onchange方法时,多次上传同一个文件时功能失效,不会发送ajax请求
                    * input[type = file] 使用的是onchange去做,onchange监听的为input的value值,
                    * 只有再内容发生改变的时候去触发,而value在上传文件的时候保存的是文件的内容,
                    * 你只需要在上传成功的回调里面,将当前input的value值置空即可
                    * 设为空之后在次点击就可实现同一文件多次上传操作
                    * */
                    upload.value = '';
                });
            }
    
            /**
             * 验证上传文件大小和类型
             * @param {this} value_ [获取input对象,一般为this]
             * @param {[number]} size_ [文件限制的大小,单位为kb]
             * @param {[string]} type_ [文件类型,当前支持image和office]
             * @param {[function]} callback [验证通过的回调]
             */
    
            function fileValid (value_, size_, type_, callback) {
                var file = value_.files[0];
                var fileSize = (file.size / 1024).toFixed(0)
                var fileType = value_.value.substring(value_.value.lastIndexOf("."));
                if (fileSize > size_) {
                    alert('文件过大');
                    return false
                }
    
                switch (type_) {
                    case 'image':
                        if (!fileType.match(/.jpg|.jpeg|.gif|.png|.bmp/i)) {
                            alert('请上传图片')
                            return false;
                        }
                        break;
                    case 'office':
                        if (!fileType.match(/.doc|.docx|.xls|.xlsx|.ppt|.pptx/i)) {
                            alert('请上传word、excel或ppt文件')
                            return false;
                        }
                        break;
                    default:
                        console.error('type_参数设置不正确!')
                        return false;
                        break;
                }
    
                callback()
            }
        </script>
    </body>
    </html>
  • 相关阅读:
    晒一下我的统一网站管理平台
    走向DBA[MSSQL篇] 从SQL语句的角度 提高数据库的访问性能
    XSS跨站脚本实例
    关于开源的一点看法
    晒一下我的监控系统
    走向DBA[MSSQL篇] 详解游标
    【linux+C】新征程 linux下C编程
    走向DBA[MSSQL篇] 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串
    晒一下我的web过滤器
    分享新出炉的微软派工具 你,值得拥有
  • 原文地址:https://www.cnblogs.com/97pkp/p/12096949.html
Copyright © 2011-2022 走看看