在IE9中上传前显示图像预览

时间:2012-06-30 06:15:20

标签: javascript

我想在上传之前显示图片。我尝试了下面的代码,但它只在firefox中工作。但我需要让它在IE中工作。可以任何人建议我最好的解决方案。我给我的下面的代码可以解释我去哪里 我用Google搜索了将近一整天。但是找不到我的解决方案 这是我的代码

enter code here

function loadname(img, previewName) {
      var isIE = (navigator.appName == "Microsoft Internet Explorer");
      var path = img.value;
      var ext = path.substring(path.lastIndexOf('.') + 1).toLowerCase();
      if (ext == "gif" || ext == "jpeg" || ext == "jpg" || ext == "png") {
          if (isIE) {
              alert(path);
              $('#' + previewName).attr('src', path);
          } else {
              if (img.files[0]) {
                  var reader = new FileReader();
                  reader.onload = function (e) {
                      $('#' + previewName).attr('src', e.target.result);
                  }
                  reader.readAsDataURL(img.files[0]);
              } 
          }
      } 
  }  

我的HTML是

 <body><form method="post" > 
<input type="file" class="file" onchange="loadname(this,'previewimg')" id="file" /><img src="about:blank" name="previewimg" id="previewimg" alt="" style="width:2in; height:2in"/> 


</form>

1 个答案:

答案 0 :(得分:6)

出于安全原因,IE9不支持访问客户端计算机上的文件,这就是您没有看到任何预览的原因。您需要将图像上传到服务器上,然后再显示它。

BIRD的视图

一种方法是在上传时,在使用ajax将文件保存到服务器上的临时文件夹时显示进度条,并将图像名称作为临时ID,并将其存储在数据库中(以便您可以稍后删除它,然后将其显示在图像控件中。如果您以后需要删除该文件,只需使用该ID删除它,或者如果您需要将其保存,请将其移至图像文件夹。