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 相关文章推荐
javascript设计模式之工厂模式示例讲解
Mar 04 Javascript
jQuery中dom元素上绑定的事件详解
Apr 24 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
Jun 08 Javascript
JavaScript去除数组里重复值的方法
Jul 13 Javascript
微信小程序 loading(加载中提示框)实例
Oct 28 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
Mar 22 Javascript
Ionic2调用本地SQlite实例
Apr 22 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
Jan 20 Javascript
Vue中的vue-resource示例详解
Nov 02 Javascript
vue项目打包之后背景样式丢失的解决方案
Jan 17 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
Jan 20 Javascript
js中forEach,for in,for of循环的用法示例小结
Mar 14 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
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
概述VUE2.0不可忽视的很多变化
2016/09/25 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
微信小程序中如何计算距离某个节日还有多少天
2019/07/15 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
python实现简单加密解密机制
2019/03/19 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
医学院校毕业生自荐信范文
2014/01/01 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
模特大赛策划方案
2014/05/28 职场文书
人民调解员培训方案
2014/06/05 职场文书
校庆标语集锦
2014/06/25 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
质检员岗位职责范本
2015/04/07 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书