JS图片上传本地预览
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:editor 阅读 443
大部分参考网络内容,具体链接找不到了=。=预览没有问题,opera要求版本高一点,至于判断大小,IE8现在还不知道怎么搞,求指导,求传授··<!DOCTYPEhtmlPU

大部分参考网络内容,具体链接找不到了=。=

预览没有问题,opera要求版本高一点,至于判断大小,IE8现在还不知道怎么搞,求指导,求传授··

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml">  <head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>Firefox3,IE6,IE7,IE8上传图片预览</title>  <style type="text/css">  #preview_wrapper{      width:300px;      height:300px;      border:1px solid #ccc;  }  #preview_fake{ /* 该对象用于在IE下显示预览图片 */      filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);  }  #preview_size_fake{ /* 该对象只用来在IE下获得图片的原始尺寸,无其它用途 */      filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);          visibility:hidden;  }  #preview{ /* 该对象用于在FF下显示预览图片 */      display: block;      width:auto;      height:auto;  }  </style>  </head>  <body>      <div id="preview_wrapper">          <div id="preview_fake">              <img id="preview" src="../image/default.jpg" onload="onPreviewLoad(this)"/>          </div>      </div><br />      <input id="upload_img" type="file" onchange="onUploadImgChange(this)"/>      <br/>      <img id="preview_size_fake"/>  <script type="text/javascript">  //上传文件  function onUploadImgChange(sender){      //单纯只为了文件名      var filePath = sender.value;      var fileExt = filePath.substring(filePath.lastIndexOf(".")).toLowerCase();      if(!checkFileExt(fileExt)){          alert("您上传的文件不是图片,请重新选择!");          return;      }      var objPreview = document.getElementById( 'preview' );          objPreviewFake = document.getElementById( 'preview_fake' ),          objPreviewSizeFake = document.getElementById( 'preview_size_fake' );      try{          //先采用HTML5方法          if(typeof FileReader !== 'undefined'){              var file = sender.files[0];              var fileSize = file.fileSize || file.size;              if(checkFileSize(fileSize)){                  var reader = new FileReader();                  reader.readAsDataURL(file);                  reader.onload = function(e){                      objPreview.src = this.result;                  }              }          }else if( sender.files){              //非IE,不支持HTML5方法              var file = sender.files[0];                          fileSize = file.fileSize;              if(checkFileSize(fileSize)){                  filePath = file.getAsDataURL();                  objPreview.src = filePath;              }            }else if( objPreviewFake.filters ){              // IE7,IE8 在设置本地图片地址为 img.src 时出现莫名其妙的后果              //(相同环境有时能显示,有时不显示),因此只能用滤镜来解决              // IE7, IE8因安全性问题已无法直接通过 input[file].value 获取完整的文件路径              sender.select();              var imgSrc = document.selection.createRange().text;              objPreviewFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;              objPreviewSizeFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;                  autoSizePreview( objPreviewFake,objPreviewSizeFake.offsetWidth, objPreviewSizeFake.offsetHeight );              objPreview.style.display = 'none';              //读取图片文件大小                      var sh = setInterval(function(){                      var img = document.createElement("img");                      img.src = imgSrc;                      fileSize = img.fileSize;                      if (fileSize > 0){                          checkFileSize(fileSize);                          clearInterval(sh);                      }                      img = null;                  }              ,100);          }      }catch(e){           alert("调用后台方法");      }      }  //检测文件类型  function checkFileExt(ext){      if (!ext.match(/.jpg|.gif|.png|.bmp/i)) {          return false;      }      return true;  }  //检测文件大小  function checkFileSize(fileSize){      if(fileSize > 1024*1024){          alert("子函数:您上传的文件大于1M,请重新选择!");          return false;      }      return true;  }  //预览  function onPreviewLoad(sender){      autoSizePreview( sender, sender.offsetWidth, sender.offsetHeight );  }  //居中显示  function autoSizePreview( objPre, originalWidth, originalHeight ){      var zoomParam = clacImgZoomParam( 300, 300, originalWidth, originalHeight );      objPre.style.width = zoomParam.width + 'px';      objPre.style.height = zoomParam.height + 'px';      objPre.style.marginTop = zoomParam.top + 'px';      objPre.style.marginLeft = zoomParam.left + 'px';  }  //图像缩放  function clacImgZoomParam( maxWidth, maxHeight, width, height ){      var param = { width:width, height:height, top:0, left:0 };      if( width>maxWidth || height>maxHeight ){          rateWidth = width / maxWidth;          rateHeight = height / maxHeight;                    if( rateWidth > rateHeight ){              param.width =  maxWidth;              param.height = height / rateWidth;          }else{              param.width = width / rateHeight;              param.height = maxHeight;          }      }      param.left = (maxWidth - param.width) / 2;      param.top = (maxHeight - param.height) / 2;      return param;  }  </script>    </body>  </html>
  

  

联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2