zoukankan      html  css  js  c++  java
  • 图片上传 显示

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style type="text/css">
            .list { padding: 10px;list-style: none} 
            .list:after { content: ""; display: block; clear: both; height: 0; line-height: 0; font-size: 0;} 
            .list li { position: relative; float: left; width: 60px; height: 60px; margin-right: 10px; border: 1px solid #ccc;} 
            .list li:before { content: ""; position: absolute; top: 50%; left: 50%; width: 30px; height: 1px; margin-top: -1px; margin-left: -15px; background-color: #ccc;} 
            .list li:after { content: ""; position: absolute; top: 50%; left: 50%; width: 1px; height: 30px; margin-top: -15px; margin-left: -1px; background-color: #ccc;} 
            .list li img { position: relative; z-index: 2; display: block; width: 100%; height: 100%;} 
            .list input[type="file"] { position: absolute; left: 0; top: 0; z-index: 3; display: block; width: 100%; height: 100%; cursor: pointer; opacity: 0;}
            </style>
    </head>
    
    <body>
      <ul class="list">
          <li>
              <input type="file" onchange="handleFiles(this.files,this.parentNode)">
          </li>
          <li>
              <input type="file" onchange="handleFiles(this.files,this.parentNode)">
          </li>
          <li>
              <input type="file" onchange="handleFiles(this.files,this)">
          </li>
      </ul>
    </body>
      <script>
        //构建预览上传图片的函数,并接收传递过来的2个变量参数
        function handleFiles(file,obj) {
            console.log(file)
            console.log(obj)
            //获取当前点击的元素的所有同级元素的html内容
            var con = obj.innerHTML;
            //判断当前点击元素内是否已经存在img图片元素,如果有则先全部清除后再添加,如果没有就直接添加
            if (con.indexOf("img") > 0) {
                var pic = obj.getElementsByTagName("img");
                for (var i=0; i<pic.length; i++) {
                    obj.removeChild(pic[i]);
                }
                //调用添加img图片的函数
                creatImg();
            } else {
                creatImg();
            }
            function creatImg() {
                //创建一个img元素
                var img = document.createElement("img");
                //设置img元素的源文件路径,window.URL.createObjectURL() 方法会根据传入的参数创建一个指向该参数对象的URL. 这个URL的生命仅存在于它被创建的这个文档里
                // img.src = window.URL.createObjectURL(file[0]);
                // //window.URL.revokeObjectURL() 释放一个通过URL.createObjectURL()创建的对象URL,在图片被显示出来后,我们就不再需要再次使用这个URL了,因此必须要在加载后释放它
                // img.onload = function() {
                //     window.URL.revokeObjectURL(this.src);
                // }
                //第二种方式
                var canvas = document.createElement('canvas');
                var ctx = canvas.getContext('2d');
                // var srcimg = new Image();
                var quality = 0.5;
                var tmp_srcimgdata = URL.createObjectURL(file[0])
                 img.src = tmp_srcimgdata;
                img.onload = function(){
                  canvas.width = img.width;
                  canvas.height = img.height;
                  ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, img.width, img.height);
                  var dataUrl = canvas.toDataURL(file[0].type, quality);
                  //转成Blob对象  FormData上传用
                  var fs=dataURItoBlob(dataUrl)
                  var fd = new FormData(document.forms[0]);
                  fd.append("canvasImage", blob);
                  console.log(fs)
    //               console.log(dataUrl);
                }
                //在当前点击的input元素后添加刚刚创建的img图片元素
                obj.appendChild(img);
    
            }
    
    
        }
        //转 Bole函数
        function dataURItoBlob(dataURI) {
          // convert base64/URLEncoded data component to raw binary data held in a string
          let byteString;
          if (dataURI.split(',')[0].indexOf('base64') >= 0){
            byteString = atob(dataURI.split(',')[1]);
          }else{
            byteString = unescape(dataURI.split(',')[1]);
          }
          // separate out the mime component
          let mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
    
          // write the bytes of the string to a typed array
          let ia = new Uint8Array(byteString.length);
          for (let i = 0; i < byteString.length; i++) {
            ia[i] = byteString.charCodeAt(i);
          }
    
          return new Blob([ia], {type:mimeString});
        }
        // 第二种
        function handleFiles(file){
          var files =file;
          var img = new Image();
          var reader =new FileReader();
          reader.readAsDataURL(files[0]);
          reader.onload =function(e){
            var dx =(e.total/1024)/1024;
            if(dx>=2){
              alert("文件大小大于2M");
              return;
            }
            img.src =this.result;
            img.style.width ="100%";
            img.style.height ="90%";
            document.querySelector('.container').appendChild(img);
          }
        }
    </script
    
    </html>

  • 相关阅读:
    写的好的功能参考地址
    碰撞检测原理
    懒加载原理的实现
    jQuery图片延迟加载插件jQuery.lazyload 的使用
    电子工厂生产楼职位解析
    打印条码方式
    条码打印二
    条码打印三
    CSS实现圆角矩形
    条码打印四
  • 原文地址:https://www.cnblogs.com/chenzxl/p/9387988.html
Copyright © 2011-2022 走看看