有些前端攻城师可能都需要有这个图片上传功能,于是我就整理出来了这么一个文档(仅供参考)。

在需要上传图片的应用程序中,用户在选择了图片之后,当然希望图片马上就显示在屏幕上。

但是此时图片还位于用户的电脑上,并未传至服务器,此时可以将<img>标签的 src属性设为 file:///? ?来指向本场的图片,本来这样应该能够解决问题。但是IE出于安全考虑,不允许<img>的src属性指定为本地的一个文件位置。于是,在IE中只能使用滤镜来实现。只有这方面熟悉的人才写的出这个代码!

在 Firefox中可以将 src属性指向?本地文件,但是要使用upload.files[0].getAsDataURL() 来获取文件名!

代码如下:


<!DOCTYPE html>

<html>
 <head>
 <meta charset="utf-8" />
 <title>图片上传功能</title>
 <script type="text/javascript">
  function checkPic() {
   var picPath = document.getElementById("picPath").value;
   var type = picPath.substring(picPath.lastIndexOf(".") + 1, picPath.length).toLowerCase();
   if (type == "jpg" || type == "bmp" || type == "gif" || type == "png") {
    return true;
   }else{
    alert("请上传正确的图片格式");
   return false
   };
   //图片预览
   function PreviewImage(divImage, upload, width, height) {
   if (checkPic()) {
    try {
     var imgPath; //图片路径

     var Browser_Agent = navigator.userAgent;
     //判断浏览器的类型
     if (Browser_Agent.indexOf("Firefox") != -1) {
      //火狐浏览器

      //getAsDataURL在Firefox7.0 无法预览本地图片,这里需要修改
      imgPath = upload.files[0].getAsDataURL();
      document.getElementById(divImage).innerHTML = "<img id='imgPreview' src='" + imgPath + "' width='" + width + "' height='" + height + "'/>";
     } else {
     //IE浏览器 ie9 必须在兼容模式下才能显示预览图片
      var Preview = document.getElementById(divImage);
      Preview.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = upload.value;
      Preview.style.width = width;
      Preview.style.height = height;
     }
     } catch (e) {
      alert("请上传正确的图片格式");
     }
    }
   };
  </script>
 </head>
 <body>
 <input type="file" id="picPath" name="doc" onchange="PreviewImage('Preview',this,120,120);" />
 <div id="Preview" style="filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);"></div>
 </body>
 </html>

技术成就梦想,细节成就品质。