javascript图片预览和上传(兼容IE)


Posted in Javascript onMarch 15, 2017

本文实例为大家分享了js图片预览和上传的具体代码,供大家参考,具体内容如下

var dailiApply = {

   change: function (evt) {
    evt.preventDefault();
    var pic = document.getElementById("preview"),
     file = document.getElementById("f");

    var ext=file.value.substring(file.value.lastIndexOf(".")+1).toLowerCase();
    // gif在IE浏览器暂时无法显示
    if(ext!='png'&&ext!='jpg'&&ext!='jpeg'){
     alert("图片的格式必须为png或者jpg或者jpeg格式!");
     return;
    }
    var isIE = navigator.userAgent.match(/MSIE/)!= null,
     isIE6 = navigator.userAgent.match(/MSIE 6.0/)!= null;

    if(isIE) {
     file.select();
     var reallocalpath = document.selection.createRange().text;

     // IE6浏览器设置img的src为本地路径可以直接显示图片
     if (isIE6) {
      pic.src = reallocalpath;
     }else {
      // 非IE6版本的IE由于安全问题直接设置img的src无法显示本地图片,但是可以通过滤镜来实现
      pic.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='image',src=\"" + reallocalpath + "\")";
      // 设置img的src为base64编码的透明图片 取消显示浏览器默认图片
      pic.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';
     }
    }else {
     var file_arr = file.files;
     var ul = $(".weui_uploader_files");
     if(file_arr.length < 7) {
      for(var key in file_arr) {
       if(file_arr.hasOwnProperty(key)) {
        var f = file_arr[key];
        var url = URL.createObjectURL(f);
        var reader = new FileReader();
        console.log(f);
        reader.readAsDataURL(f);
        n +=1;
        if(n < 7) {
         reader._onload = function(e) {

          // 拼接显示预览图片的html
          var list = $("<li class='weui_uploader_file' style='position: relative'>" +
           "<img id='preview" + n + "' class=preview_li' style='width: 100%;height: 100%'>" +
           "<span id='delImg" + n+ "' style='position: absolute; top: 0; right: 4px; color: #e4007f'>X</span></li>");
          ul.append(list);
          // 将转化后的图片地址放在img中
          var pic = document.getElementById('preview' + n);
          //pic.src = this.result;
          pic.src=url;
          dailiApply.compress(f, .7,undefined);
          //images.push(f);
          document.getElementById('delImg' + n).addEventListener("click", function () {
           $(this).parent().remove();
           --n;
          });

         };
         reader._onload();
        }else {
         $.alert("最多上传6张图片");
         n = 6;
        }
       }
      }
     }else {
      $.alert("最多上传6张图片");
     }
    }
    return false;
   },
   /**
    * @param {Object} f input选择的图片 必填
    * @param {String} quality  图片压缩的质量[0, 1]
    * @param {String} output_img_type  输出图片的类型
    */
   compress: function (f, quality, output_img_type) {
    var mime_type = "image/jpeg";
    if(output_img_type!=undefined && output_img_type=="image/png"){
     mime_type = "image/png";
    }
    createImageBitmap(f).then(function(imageBitmap) {
     var max = 1000; // 设置最大分辨率
     var c_w = '';
     var c_h = '';
     var width = imageBitmap.width;
     var height = imageBitmap.height;
     // 等比例缩放
     if (width > max || height > max) {
      if (width > height) {
       c_w = max;
       c_h = max * height / width;
      } else {
       c_h = max;
       c_w = max * width / height;
      }
     }else {  // 不缩放
      c_w = width;
      c_h = height;
     }

     var canvas = document.createElement('canvas');
     canvas.width = c_w;
     canvas.height = c_h;
     var ctx = canvas.getContext('2d');
     ctx.drawImage(imageBitmap,0,0, width, height, 0, 0, c_w, c_h);
     canvas.toBlob(function(blob){
      images.push(blob);
     },mime_type, quality);
    });
   },
   submit: function () {
    var content = $(".weui_textarea").val().trim();
    var xhr = new XMLHttpRequest();
    var fd = new FormData(document.getElementById('uploadForm'));
    $.each(images,function(i,e){
     fd.append("images", e);
    });
    fd.append("remark", content);
    fd.append("substationproxyId", 8);
    console.log(images);
    console.log(fd);
    if(content) {
     $.ajax({
      url: CONFIG.API.addSubProxyRecruit,
      type: "POST",
      data: fd,

      processData: false, // tell jQuery not to process the data
      contentType: false, // tell jQuery not to set contentType
      beforeSend: function (xhr) {
       $.showLoading();
       $(this).prop("disabled", true)
      },
      success: function (json) {
       console.log(json);
       $.hideLoading();
       $(this).prop("disabled", false);
       if(json.errorCode == 0) {
        $.alert("保存成功", function () {
         location.reload();
        })
       }else if(json.errorCode == "-101") {
        $.alert('出错:' +json.message, function () {
         location.href = CONFIG.HTML.login;
        });
       }else {
        $.alert(json.message, function () {

        })
       }
      }
     });
    }else {
     $.alert('请输入内容');
    }

   }

  };

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQery jstree 大数据量问题解决方法
Mar 09 Javascript
jQuery+jRange实现滑动选取数值范围特效
Mar 14 Javascript
基于JavaScript获取鼠标位置的各种方法
Dec 16 Javascript
jquery购物车结算功能实现方法
Oct 29 Javascript
Bootstrap CSS布局之表单
Dec 17 Javascript
Angular2实现自定义双向绑定属性
Mar 22 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
Jul 13 Javascript
vue.js实现单选框、复选框和下拉框示例
Jul 18 Javascript
使用Node.js实现简易MVC框架的方法
Aug 07 Javascript
ES6 Array常用扩展的应用实例分析
Jun 26 Javascript
使用eslint和githooks统一前端风格的技巧
Jul 29 Javascript
关于React Native使用axios进行网络请求的方法
Aug 02 Javascript
轻松理解JavaScript之AJAX
Mar 15 #Javascript
jQuery插件ContextMenu自定义图标
Mar 15 #Javascript
JavaScript对象引用与赋值实例详解
Mar 15 #Javascript
jQuery图片瀑布流的简单实现代码
Mar 15 #Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
Mar 15 #Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
Mar 15 #Javascript
js中的触发事件对象event.srcElement与event.target详解
Mar 15 #Javascript
You might like
php中使用redis队列操作实例代码
2013/02/07 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
2017/06/19 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
星球大战与Python之间的那些事
2016/01/07 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
opencv与numpy的图像基本操作
2019/03/08 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
英国领先的在线高尔夫商店:Scottsdale Golf
2019/08/26 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
离职保密承诺书
2014/05/28 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
个人原因辞职信模板
2015/05/13 职场文书
居安思危观后感
2015/06/11 职场文书
自信主题班会
2015/08/14 职场文书
践行三严三实心得体会(2016推荐篇)
2016/01/06 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers