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

发布时间 - 2026-01-11 00:11:22    点击率:

本文实例为大家分享了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('请输入内容');
    }

   }

  };

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


# js图片预览  # js图片上传  # js图片预览和上传  # JS使用H5实现图片预览功能  # 简单实现JS上传图片预览功能  # angularjs点击图片放大实现上传图片预览  # JS HTML5拖拽上传图片预览  # js实现纯前端的图片预览  # 轻松实现js图片预览功能  # javascript实现input file上传图片预览效果  # js实现上传图片预览的方法  # 上传图片预览JS脚本 Input file图片预览的实现示例  # viewer.js实现图片预览功能  # 最多  # 上传  # 滤镜  # 放在  # 可以通过  # 请输入  # 可以直接  # 大家分享  # 来实现  # 必填  # 具体内容  # 大家多多  # 浏览器设置  # 等比例  # DXImageTransform  # style  # filter  # progid  # Microsoft  # image 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  实现点击下箭头变上箭头来回切换的两种方法【推荐】  北京的网站制作公司有哪些,哪个视频网站最好?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel如何自定义分页视图?(Pagination示例)  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Laravel如何实现API版本控制_Laravel版本化API设计方案  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  如何生成腾讯云建站专用兑换码?  再谈Python中的字符串与字符编码(推荐)  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  Python进程池调度策略_任务分发说明【指导】  Laravel如何为API编写文档_Laravel API文档生成与维护方法  Laravel如何配置和使用缓存?(Redis代码示例)  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  黑客入侵网站服务器的常见手法有哪些?  JavaScript如何实现音频处理_Web Audio API如何工作?  如何打造高效商业网站?建站目的决定转化率  济南网站建设制作公司,室内设计网站一般都有哪些功能?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  如何快速上传建站程序避免常见错误?  IOS倒计时设置UIButton标题title的抖动问题  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  Laravel怎么上传文件_Laravel图片上传及存储配置  Android自定义控件实现温度旋转按钮效果  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  Java类加载基本过程详细介绍  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  网站制作企业,网站的banner和导航栏是指什么?  如何快速搭建支持数据库操作的智能建站平台?  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  如何快速搭建虚拟主机网站?新手必看指南  英语简历制作免费网站推荐,如何将简历翻译成英文?  C#如何调用原生C++ COM对象详解  高端网站建设与定制开发一站式解决方案 中企动力  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  在centOS 7安装mysql 5.7的详细教程  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】