原生js实现图片单张上传及批量上传

简介: 原生js实现图片单张上传及批量上传

效果图:


网络异常,图片无法展示
|


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>pc图片上传</title>
    <style>
    .up{ display: inline-block; vertical-align: middle; border:1px solid #eaeaea;box-sizing: border-box; text-align: left; margin-right: 20px;
    margin-bottom: 20px; width:240px; height: 240px; }
    .tips{color: #999999;text-align: center;position: absolute;bottom:0;left: 96px;}
    .Input{ position: relative; width: 240px; height: 240px; background: url(add.png)no-repeat center center; }//这里的图片背景源文件在下面。
    .on{ position: relative; display: inline-block; text-align: left; margin-right: 20px; margin-bottom: 20px; width: 240px; height: 240px; display: none; position: relative; overflow: hidden; line-height: 200px; }
    /*新增加的img*/
    .on img{ width: 100%; height: auto; position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin:auto; }
    .on div{position: absolute; height: 40px;width: 100%;bottom: 12px;z-index: 10;text-align: center;}
    .on div p:nth-child(1){ float: left; width: 50%; line-height: 40px; font-size: 14px; cursor: pointer; color: #666666; background-color: #f4f4f4; }
    .on div p:nth-child(2){ cursor: pointer; float: left; width: 50%; font-size: 14px; color: #666666; line-height: 40px; background-color: #f8f8f8; }
    .up input{ width: 240px; height: 240px; opacity: 0; }
    .button{ margin-top: 30px; }
    /*批量上传*/
    .button .set{ display: inline-block; width: 216px; height: 36px; background:url(btn_upload_off.png); background-size: 100% 100%; }
    .set input{ width: 216px; height: 36px; opacity: 0; }
    .submit{width: 100px;  text-align: center; margin-top: 20px; border: 1px solid #333333; padding: 10px 0; border-radius: 4px;} 
  </style>
</head>
<body>
    <section id="content">
        <ul class="baohan">
            <li class="up">
                <div class="Input">
                    <input type="file" name="" class="fileinput">
                    <p class="tips">添加图片</p>
                </div>
                <div class="on">
                    <div>
                        <p>排序</p>
                        <p class="del">删除</p>
                    </div>
                </div>
            </li>
            <li class="up">
                <div class="Input">
                    <input type="file" name="" class="fileinput" "> 
                    <p class="tips">添加图片</p>
                </div>
                <div class="on">
                    <div>
                        <p>排序</p>
                        <p class="del">删除</p>
                    </div>
                </div>
            </li>
            <li class="up">
                <div class="Input">
                    <input type="file" name="" class="fileinput" "> 
                    <p class="tips">添加图片</p>
                </div>
                <div class="on">
                    <div>
                        <p>排序</p>
                        <p class="del">删除</p>
                    </div>
                </div>
            </li>
            <div class="button">
                <div class="set"><input type="file" name="" multiple="multiple" id="piliang"></div>
            </div>
            <div class="submit">提交</div>
        </ul>
    </section>
</body>
<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
<script>
$(document).ready(function(){
  $(".fileinput").change(function(){
    var file=this.files[0];
    readFile(file,$(this).parent().siblings(".on"));
  });
  $(".on").mouseover(function(){
    $(this).children("div").show();
  });
  $(".on").mouseout(function(){
    $(this).children("div").hide();
  });
  $(".del").click(function () {
          $(".on>div").hide();
          $(this).parent().parent().hide();
          $(this).parent().parent().siblings(".Input").show();
          $(this).parent().siblings("img").remove()
          $(".fileinput").val("");
    });
    var on =document.querySelector(".on");
//    需要把阅读的文件传进来file element是把读取到的内容放入的容器
    function readFile(file,element) {
//        新建阅读器
        var reader = new FileReader();
//        根据文件类型选择阅读方式
        switch (file.type){
            case 'image/jpg':
            case 'image/png':
            case 'image/jpeg':
            case 'image/gif':
                reader.readAsDataURL(file);
                break;
        }
//        当文件阅读结束后执行的方法
        reader.addEventListener('load',function () {
//            如果说让读取的文件显示的话 还是需要通过文件的类型创建不同的标签
            switch (file.type){
                case 'image/jpg':
                case 'image/png':
                case 'image/jpeg':
                case 'image/gif':
                    var img = document.createElement('img');
                    img.src = reader.result;
                    element.append(img);
                    element.siblings(".Input").hide();
                    element.show();
                    break;
            }
        });
    }
 // 批量上传
    var piliang = document.querySelector('#piliang');
    var on = $('.on');
    piliang.addEventListener('change',function () {
       for (var i = 0;i < this.files.length;i++){
           var file = this.files[i];
           on.eq(i).children(".cha").next().remove();
           readFile(file,on.eq(i));
       }
    });
//  
var on = $(".on");
$(".submit").click(function () {
  for (var i = 0; i < 10; i++) {
    console.log(on[i].childNodes.length);
    if (on[i].childNodes.length==6){
     alert("上传成功");
     return 
    }else{
      alert("上传照片不足十张");
      $(".next").attr("href","javascript:void(0)");
      return;
    }
  }
});
});
</script>
</html>



相关文章
|
7天前
|
前端开发 JavaScript
杨老师课堂之JavaScript案例手动切换轮播图片
杨老师课堂之JavaScript案例手动切换轮播图片
11 2
|
7天前
|
前端开发 JavaScript
杨老师课堂之JavaScript案例之自动切换轮播图片
杨老师课堂之JavaScript案例之自动切换轮播图片
11 1
|
11天前
|
Web App开发 JavaScript 前端开发
使用 JS 实现在浏览器控制台打印图片 console.image()
在前端开发过程中,调试的时候,我们会使用 console.log 等方式查看数据。但对于图片来说,仅靠展示的数据与结构,是无法想象出图片最终呈现的样子的。 虽然我们可以把图片数据通过 img 标签展示到页面上,或将图片下载下来进行预览。但这样的调试过程实在是复杂,何不实现一个 console.image() 呢?
20 1
使用 JS 实现在浏览器控制台打印图片 console.image()
|
21天前
|
JavaScript 前端开发 安全
80 行 JS 代码实现页面添加水印:文字水印、多行文字水印、图片水印、文字&图片水印
80 行 JS 代码实现页面添加水印:文字水印、多行文字水印、图片水印、文字&图片水印 1. 信息标识: 水印可以用于标识文档的所有者、保密级别、状态或其他相关信息,帮助用户更好地理解文档内容的属性。 2. 版权保护: 在文档中添加水印可以帮助保护内容的版权,防止他人未经授权地复制、转载或篡改内容。 3. 安全保护: 对于敏感信息或机密文档,添加水印可以帮助防止信息泄露,提高文档的安全性。 4. 提升专业性: 在一些场景下,如商业报告、合同文件等,添加水印可以增加文档的专业性和正式性。 5. 防止截屏或拷贝: 在网页中添加水印可以防止用户通过截屏或复制粘贴等方式非法获取文档内容。
21 1
80 行 JS 代码实现页面添加水印:文字水印、多行文字水印、图片水印、文字&图片水印
|
8天前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
7天前
|
前端开发 JavaScript
杨校老师课堂之JavaScript案例之跑马灯左右无缝连接图片自动轮播
杨校老师课堂之JavaScript案例之跑马灯左右无缝连接图片自动轮播
9 2
|
13天前
|
JavaScript
原生JS实现全选、全不选
原生JS实现全选、全不选
|
15小时前
|
移动开发 JavaScript 前端开发
rem的适配方案,css文件和js文件的引入方式,特色小边框的制作,DS-Digital.ttf数字展示屏的使用方法:,自适应图片 background-size,jQuery爆bug,a和盒子居中,
rem的适配方案,css文件和js文件的引入方式,特色小边框的制作,DS-Digital.ttf数字展示屏的使用方法:,自适应图片 background-size,jQuery爆bug,a和盒子居中,
|
19小时前
|
数据采集 Web App开发 XML
详尽分享用Node.js写爬虫,撸羞羞的图片
详尽分享用Node.js写爬虫,撸羞羞的图片
|
30天前
|
前端开发 JavaScript PHP
解决在页面中无法获取qrcode.js生成的base64的图片
该文档介绍了如何解决在部分安卓手机上无法正确加载二维码图片的问题。之前的方法是使用qrcode.js生成二维码,然后与背景图结合用canvas绘制海报,但在某些安卓设备上遇到onload事件不触发的问题。
29 2