js怎樣獲取要上傳圖片的寬度\高度\尺寸,必須兼容IE6、IE7、IE8


我現在用asp做上傳圖片,但需要在客戶端用js就先判斷<input name="pic" type="file" />圖片控件中的圖片寬高尺寸,在ie6下我己經實現了,如下:
var img= new Image();
img.src = document.getElementById("pic").value;
alert(img.width);
alert(img.width);
alert(img.fileSize/1024);
但在ie7、ie8下面就不行,請做過的,有經驗的朋友幫忙啊,十萬緊急!多謝了
(網上有的說用img.offsetWidth,我試了好像也不行)

27 个解决方案

#1


自己先頂一下,大家幫忙啊

#2


http://www.javaeye.com/problems/25325

#3


樓上提供的沒有看到說怎么兼容IE6\7\8

#4


ie7,ie8的瀏覽器有設置,在上傳文件時不顯示目錄,
document.getElementById("pic").value得到的可能只是文件名,不帶路徑的,因此
img.src 就找不到文件的。
兼容所有瀏覽器的方法目前沒有,最好在服務器端進行處理比較保險

#5


孟大哥都出馬了,document.getElementById("pic").value目前這個方法是可以得到整個路徑的,在IE6\7\8下都可以,試過的。img.src也能賦值成功,現在主要就是img.width這個到了IE7、8下就不認識了,ie6下是認識的

#6


服務器端判斷。要是通過腳本就能獲取本地文件的大小,尺寸,那不就是病毒了嗎。如果這樣可以,網頁豈不是可以獲取我們本地的任意文件了?建議服務器判斷,另外,如果非要客戶端判斷,需要開發一個小控件。

#7


IE6下都可以,現在就是求IE7、8下能行得通的方法

#8


http://www.cnblogs.com/cloudgamer/archive/2009/12/22/ImagePreview.html
這個是預覽的,在他的js中有個方法可以得到,兼容6、7、8

#9


用flash上傳可以拿到你想要的數據,自已寫也不難,......網絡上也有很多flash上傳圖片的插件應該都提供這些功能

#10


把new出來的圖片,append進一個div,然后用腳本把div的寬高計算出來,這樣的思路看行不行?

#11


引用 6 樓 zhaoyang66 的回復:
服務器端判斷。要是通過腳本就能獲取本地文件的大小,尺寸,那不就是病毒了嗎。如果這樣可以,網頁豈不是可以獲取我們本地的任意文件了?建議服務器判斷,另外,如果非要客戶端判斷,需要開發一個小控件。


這種說法不支持,如果啥都在服務器段判斷,豈不等於父親幫兒子把所有的事都做完,兒子就管享受就是了?

我一時也說不上咋解決,不過我可以說個方法可能有用。就是你在JS里打斷點到你的Img對象那里,調試然后看那個屬性得到的是准確的值

#12


安全性越來越高了,加入可信任站點才可以

#13


不行的
就算本地可以

上傳上去 也不行的

IE安全級別限制

#14


  function a()
  {
    var img= new Image();
    $(img).attr("src",$("#pic").val());
    alert($(img).width());
     alert($(img).height());
    
  }

#15


    <script type="text/javascript" language="JavaScript" src="JQuery.js"></script>

    <script type="text/javascript" language="javascript">
   $(document).ready(function(){
        
      
    })
  function a()
  {
    var img= new Image();
    $(img).attr("src",$("#pic").val());
    alert($(img).width());
     alert($(img).height());
    
  }
    </script>


<input name="pic" id="pic" type="file" />
        <input id="Button1" type="button" value="查看高寬"  onclick="a()"/>

#16



#17


以上的還是都沒解決,ie6可以,現在問題是ie7.8都不行

#18


if(img.readyState!="complted")
return false;
alert(img.offsetWidth);
alert(img.offsetHeight);

#19


引用 5 樓 foxconn_nich 的回復:
孟大哥都出馬了,document.getElementById("pic").value目前這個方法是可以得到整個路徑的,在IE6\7\8下都可以,試過的。img.src也能賦值成功,現在主要就是img.width這個到了IE7、8下就不認識了,ie6下是認識的

是這樣嗎。
不說取不取到文件框里的VALUE的問題。單說:
img.src = 已取到的值;
alert(img.width);
alert(img.height);
這個的話,應該沒問題,而且我在IE8里也實際測試過,如果有問題才怪了。

#20


flash。。。否則客戶端根本取不到。新瀏覽器安全性問題

#21


#22


var img= new Image();
img.src = document.getElementById("pic").value;
alert(img.width +img.scrollLeft);
alert(img.height +img.scorllTop);
alert(img.fileSize/1024);

#23


引用 19 樓 theforever 的回復:
引用 5 樓 foxconn_nich 的回復:
孟大哥都出馬了,document.getElementById("pic").value目前這個方法是可以得到整個路徑的,在IE6\7\8下都可以,試過的。img.src也能賦值成功,現在主要就是img.width這個到了IE7、8下就不認識了,ie6下是認識的

是這樣嗎。
不說取不取到文件框里的VALUE的問題。單說:
img.src……


我在IE7,8用這樣的方法是取不到的,客戶那里也一樣,始終沒辦法,難道跟每個人的IE設置有關?alert(img.offsetWidth);這種也試了,不行.還是沒找到方法.難道真如孟大哥說的一樣..看來我得從后台判斷了

#24


等圖片加載完成后再讀取

<!DOCTYPE html >
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>無標題文檔</title>
<script type="text/javascript">
function getImageSize(){
var pic = document.getElementById("pic").value;
var img = new Image();
img.onload = function(){
img.onload = null;
alert(img.width);
};
img.src = pic;
}
</script>
</head>

<body>
<input type="file" id="pic" />
<input type="button" value="上傳" onclick="getImageSize()" />
</body>
</html>

#25


樓上說的也是一種可能,當圖片較大時,加載會慢些,如果直接取圖片尺寸可能就不行了。在圖片的onload事件中取就能消除這個影響。試試這個看看。

至於IE對於文件框路徑的設置,我的IE8基本沒太改設置,算是默認狀態。如果可以的話,也可以接受。這種事情由服務器做,從很多方面來看都不太合適。

#26


IE7以上設置為可信任站點即可。

#27


現在解決了嗎?我也遇到這樣的問題了

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: