zoukankan      html  css  js  c++  java
  • input file实现多选,限制文件上传类型,图片上传前预览功能

    限制上传类型 & 多选:

    ① accept 属性只能与 <input type="file" /> 配合使用。它规定能够通过文件上传进行提交的文件类型。 ② multiple 属性规定输入字段可选择多个值。

    示例:
    <!--
          image/*     所有图片
          image/png   png图片
          image/jpg   jpg图片
          image/gif   gir动图
          application/msword  Word文档(.doc)
          application/vnd.openxmlformats-officedocument.wordprocessingml.document     Word文档(.docx)
          application/vnd.ms-excel    Excel文档(.xls)
          application/vnd.openxmlformats-officedocument.spreadsheetml.sheet   Excel文档(.xlsx)
          application/vnd.ms-powerpoint   PPT文档(.ppt)
          application/vnd.openxmlformats-officedocument.presentationml.presentation   PPT文档(.pptx)
          application/zip     压缩文件
          text/plain  文本文件
          text/html   HTML文件
          text/css    css文件
          application/pdf    pdf文件
          audio/*     音频文件
          video/*     视频文件
      -->
      <input  id="files"
              type="file"
              accept="image/*,
                      application/msword,
                      application/vnd.openxmlformats-officedocument.wordprocessingml.document,
                      application/vnd.ms-excel,
                      application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,
                      application/vnd.ms-powerpoint,
                      application/vnd.openxmlformats-officedocument.presentationml.presentation, application/zip,
                      text/plain,
                      text/html,
                      text/css,
                      application/pdf,
                      audio/*,
                      video/*"
              multiple />
    图片上传前预览:
    示例:
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
        <!-- <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script> -->
        <style type="text/css">
        html,
        body {
            margin: 0;
            padding: 0;
        }
    
        .tip {
             100%;
            text-align: center;
        }
    
        .main {
            box-sizing: border-box;
            display: flex;
            flex-wrap: wrap;
            justify-content: flex-start;
            align-items: center;
            border: 2px dotted red;
            padding: 20px;
        }
    
        .add {
             100px;
            height: 100px;
            border: 2px solid #333;
            box-sizing: border-box;
            font-size: 100px;
            line-height: 100px;
            font-weight: 100;
            color: #333;
            display: flex;
            justify-content: center;
            align-items: center;
            cursor: pointer;
        }
    
        .form {
            display: none;
        }
        </style>
    </head>
    
    <body>
        <div class="tip"></div>
        <div class="main">
            <div class="add">+</div>
            <form class="form"></form>
        </div>
    </body>
    
    </html>
    <script type="text/javascript">
    //判断浏览器是否支持FileReader接口
    if (typeof FileReader == 'undefined') {
        $(".tip").html("<h1>当前浏览器不支持FileReader接口</h1>");
    }
    var index = 0;
    $(".add").click(function(e) {
        if (!$("#upload")[0]) {
            $(".form").append("<input id='upload' class='num" + (++index) + "' onchange='showImg(this)' type='file' accept='image/*' />");
        }
        $("#upload").click();
    });
    // 展示图片
    function showImg(el) {
        var reader = new FileReader();
        //读取文件过程方法
        reader.onloadstart = function(e) {
            console.log("开始读取....");
        };
        reader.onprogress = function(e) {
            console.log("正在读取中....");
        };
        reader.onabort = function(e) {
            console.log("中断读取....");
        };
        reader.onerror = function(e) {
            console.log("读取异常....");
        };
        reader.onload = function(e) {
            console.log("成功读取....");
            // console.log(e);
            var img = "<img class='img num" + index + "' width='100px' height='100px' onclick='del(" + index + ")' src='" + e.target.result + "' alt=''>";
            $(img).insertBefore('.add');
        };
        reader.readAsDataURL(el.files[0]);
        $(el).removeAttr('id');
    }
    // 删除图片并删除对应隐藏的input
    function del(cls){
        $(".num" + cls).remove();
    }
    </script>
    注意:如果不选图片,点取消的时候,上例中会有一个多余的input,表单提交的时候,记得把没有值的 input 删除掉。
     
  • 相关阅读:
    webpack简介与使用
    webpack使用小记
    H5常用技巧
    mac 终端 常用命令
    vue.js学习资料
    git clean(转载)
    HTML5 移动端的上下左右滑动问题
    HTML5+CSS3 loading 效果收集--转载
    使用Chrome DevTools的Timeline分析页面性能
    phantomjs 是什么?----主要是mac下面
  • 原文地址:https://www.cnblogs.com/jserhub/p/9228581.html
Copyright © 2011-2022 走看看