IE7下不允许显示用户本地图片的问题

    在IE6.0中,用户可以在javascript中或许最终用户本地图片的长宽:
  1. <Script language=Javascript>
  2.     function getLocalImageInfo( imgUrl )
  3.     {
  4.         var objImg = new Image();
  5.         objImg.src = imgUrl;
  6.         alert( objImg.width )     //the width of the local image 
  7.         alert( objImg.height )    //the height of the local image 
  8.     }
  9.     //调用如下 
  10.     getLocalImageInfo("file://c:/1.jpg");
  11. </Script>

   并且,在IE6.0中,在客户端本地上传图片前可以通过Javascript/html预览要上传的图片,并获取图片的文件大小:

  1. <html>
  2.   <head>
  3.      <title>Upload file</title>
  4.   </head>
  5.   <body>
  6.      <input type="file" onchange="javascript:previewImage(this.value)" >
  7.      <img id="img" />
  8.      <script language="javascrtip">
  9.           function previewImage( imgUrl )
  10.           {
  11.              var objImg = document.getElementById("img");
  12.              objImg.src = imgUrl;
  13.              alert( "the size of the image file:" + objImg.fileSize )
  14.           }
  15.      </script>
  16.   </body>
  17. </html>

      Note: 上面的代码最好在img图片加载完毕后再取图片的大小,例如:objImg.onreadystatechange()=function{ if(objImg.readystate=="complete")............}

 

      当在IE7中,如果上述代码放在客户机本机(以html的形式放在客户机器上,而不是放在IIS中通过http访问)以文件方式打开时仍然能实现IE6中的功能,但如果上述代码放在IIS中,用IE7 通过HTTP协议访问则不能正常工作。

 

     经过查找资料才发现IE7在安全性方面做了提升,通过http访问的页面默认是没有访问用户本机图片文件的权限的,所以通过javascript获取不了本机的图片长宽,也不能将本机图片地址赋值给<img>对象。如果将所访问的站点放入“可信站点”列表中(IE7->工具->Internet选项->安全->可信站点),则可以如IE6一样正常工作。

 

     如果不想通过客户将本站点设置为“可信”站点的方式来实现上传图片的预览及获取图片长宽信息,则可以利用style的"DXImageTransform.Microsoft.AlphaImageLoader" 滤镜来实现:

  1. <html >
  2. <head id="Head1" runat="server">
  3.     <title>Untitled Page</title>
  4.     <script language=javascript>
  5.         function setImagePreview( fileUrl )
  6.         {            
  7.             var objDivFilter = document.getElementById("divFilter")            
  8.             
  9.             if( fileUrl )
  10.             {   
  11.                 objDivFilter.style.width = "400px";    
  12.                 objDivFilter.style.height = "400px";        //这个设置初始大小是必须的
  13.                 
  14.                 objDivFilter.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod = image)";   
  15.                 objDivFilter.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = fileUrl;                           
  16.         
  17.                 // get width and height
  18.                 alert( objDivFilter.offsetWidth)
  19.                 alert( objDivFilter.offsetHeight)
  20.             }
  21.         }
  22.         
  23.     </script>
  24. </head>
  25. <body>
  26.     <form id="form1" runat="server">
  27.     <div>
  28.         <asp:FileUpload ID="txtFile" runat="server" Width="508px" onchange="javascript:setImagePreview( this.value );" />
  29.   
  30.         <br />
  31.         <div id="divFilter" />
  32.         
  33.     </div>
  34.     </form>
  35. </body>

 

        但上述办法还不能在客户端获取图片文件的大小,我也没有找到很好的解决方案

 

       另外:在.net中,可以在C#后台代码中获取图片的相应信息,只不过这种方式增加了一些不必要的网络传输过程,有一定的性能代价。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值