先看两个图片:
第一个是在tomcat运行时现实的结果:第二个是直接用IE8打开现实的结果:大家可以看到他们的不同,也就是路径获取的问题。
这是问题之一。
下面是html代码,复制可以直接运行:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD> <BODY>
  <script>
var img=null;
function s()
{
if(img)img.removeNode(true);
img=document.createElement("img");
img.style.position="absolute";
img.style.visibility="hidden";
img.attachEvent("onreadystatechange",orsc);
img.attachEvent("onerror",oe);
document.body.insertAdjacentElement("beforeend",img);
img.src=inp.value;
alert(inp.value);
}
function oe()
{
alert("cant load img");
}
function orsc()
{
if(img.readyState!="complete")return false;
alert("图片大小:"+img.offsetWidth+"X"+img.offsetHeight);
alert("图片尺寸:"+img.fileSize);
}
</script>
<input id=inp type="file">
<br>
<button onclick="s()">Test</button>
 </BODY>
</HTML>运行后可以得到上传图片的大小和尺寸,
问题是把这段代码放在了我的web工程里面原封不动,就会有问题,
不知道是不是tomcat的问题,我用的是最新的apache-tomcat-6.0.29。
如果大家谁在上struts2中实现了功能,也就是获取图片大小,实在页面上,不是传到action以后,请指教。
不胜感激

解决方案 »

  1.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <head>
    <title></title>
    <script type="text/javascript">
    function getFileSize(path) 

       alert(path);
       var fso = new ActiveXObject("Scripting.FileSystemObject"); 
       alert(fso.GetFile(path).size); 
    }
    </script>
    </head>
    <body>
         <input type="file" name="file2" size="30" onchange="getFileSize(this.value);">
    </body>
    </html>通过js获取
      

  2.   

    可放在web工程里面就成了图片中获取的路径了。而不是图片二。
      

  3.   

    我用的是struts2的最新的2.2.1,难道是这个问题,我再试试用2.1.
      

  4.   

    小弟又重新建了一个工程加入struts2.1.8的包,直接拷贝你的代码,结果还是一样,路径没获取对。
      

  5.   

    我是在action中获取图片的大小的
      

  6.   

    我认为你的那段js代码在本地直接执行可以获取图片大小
    而web工程里不可以,这个并不是tomcat的问题,你换成任何web服务器都会有这个问题,
    因为你在本地打开譬如a.html,a.html所在的是一个实际路径,相对于图片获得的都是真实实际的路径,
    而一旦加入到web工程,这个网页所在的就是虚拟路径了,虚拟路径似乎不能直接通过js获得本地文件大小的,需要到后台服务端才能获得(不排除用一些空间等等获取),
    刚浏览了下百度,说的视乎js可以获取,但不是你呈现的方式,你看下下一网页,看有没帮助,
    http://zhidao.baidu.com/question/121232419.html?fr=ala0
      

  7.   


        我建立了个web工程,直接创建了个test.html。然后测试可以正确得到路径。没有添加正确的框架。
    你和我环境不同,可能有两点,一点是你的页面可能是jsp。其次就是我没有添加任何的框架元素。
      

  8.   

    另外在IE8中怎么获取上传图片的大小,首先要说的是:onload我这里不行readystate也不行,真是郁闷死了。
      

  9.   

    单一文件上传的话试一下
    function getFileByteSize(fileElementId) {       var obj = document.getElementById(fileElementId);
           if (obj == null) {return 0;}
           if (obj.value == null || obj.value == "") return 0;
            return obj.files.item(0).fileSize;
    }