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>

原文地址:https://www.cnblogs.com/97pkp/p/12096949.html

时间: 2024-08-01 06:21:16

H5 input file上传图片验证的相关文章

h5 input file ajax实现文件上传

<input type="file" accept="image/*" height="0" class="file_input" id="file_input_ss_0" multiple>  文件域 遇到的几个BUG 已经解决 1 多选文件域,如果没有上传成功或已上传成功,再次点击文件域名选择图片时,会累积上次的文件. 例如 第一次上传1.jpg  第二次点击上传 2.jpg 第二次的上传结

input file 添加图片预览 绑定onchange执行函数 重复添加不执行onchange函数

问题描述: input file上传图片 绑定了onchange执行函数,是在选择的图片发生变化时才会触发onchange的函数.当我们添加图片并预览时,遇到添加同一张图片或者,添加后删除再添加同一张图片时,不会触发onchange事件. 解决方法: 1.在执行的onchange里的函数最后重新生成一段input file html代码替换掉原来的input file $('#cFile').replaceWith('<input type="file" id="cFi

&lt;input type = file/&gt;上传图片限制大小、类型判断、像素判断

<input type = file/>上传图片限制大小.类型判断.像素判断 在项目中经常用到input标签来上传文件,而这些文件通常是图片文件.图片有很多格式我们只需要其中的几种,就需要对用户上传的文件进行验证,在HTML5中有一个新的属性:accept文件类型限制.但是通常我们会用javascript或jQuery编写方法进行验证图片的大小限制.类型判断.像素判断 <!DOCTYPE html> <html> <head> <meta charse

前端实现input[type=&#39;file&#39;]上传图片预览效果

众所周知JavaScript在设计上处于安全角度考虑,是不允许读写本地文件的(原因请自行百度): 但是在实际项目应用中,经常会使用到上传图片,并且可以让用户直接预览图片.对于此种做法有两种方法可以实现:一是前后台交互,后台将图片地址返回前端: 二是,我今天写的内容,使用FileReader对象--允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容:此种方法可以优化图片加载速度,减少方法一占用带宽的问题: 但是,此种方法兼容性存在问题,主要是IE浏览器(ie10以上没问题

ajax form表单提交 input file中的文件

ajax form表单提交 input file中的文件 现今的主流浏览器由于ajax提交form表单无法把文件类型数据提交到后台,供后台处理,可是开发中由于某些原因又不得不用ajax提交文件, 为了解决这个问题我走了不少弯路: 1.用原生的 input file , 不支持ajax上传文件,你肯定会说可以用 ajax form表单上传了呀?不过我后面还要调用上传成功后用js处理一些对话框,所以这种方法排除 2.用了 uploadify 上传插件,弄出来能上传东西,结果不理想:因为不能判断上传的

19 表单验证&amp;上传图片验证

表单验证 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>表单验证</title> 6 <style type="text/css"> 7 *{ 8 padding:0; 9 margin:0; 10 } 11 .box{ 12 margin:100px

iOS之input file调用相册控制器消失跳转到登陆页

最近在做一个app要用到H5,其中有一个需求是要点击H5的的控件弹出系统相册,通过在H5的input file 中定义<input type="file" class="ios_only" accept="image/*" capture="camera">调用系统相册时虽然可以弹出如下的alertView 但是当点击相册时却相册,反而是跳转到登陆面,查看控制台发现发现报了如下的错误: 根据字面意思理解为我的四个控

动态input file多文件上传到后台没反应的解决方法!!!

其实我也不太清除具体是什么原因,但是后面就可以了!!! 我用的是springMVC 自带的文件上传 1.首先肯定是要有springMVC上传文件的相关配置! 2.前端 这是动态input file上传到后台没反应的写法(页面上写死的上传到后台是可以的) 这段代码是写在table>>下的form表单里的 <input type="button" name="button" value="添加附件" onclick="ad

Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案

原文地址:Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案 启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:"No input file specified." 原因在于使用的PHP是fast_cgi模式,而在某些情况下,不能正确识别path_info所造成的错误,Wordpress的伪静态也有一样的问题. Wordpress程序默认的.htaccess里面的规则: 1 HTML " data