我在一网页中的javascript利用Scripting.FileSystemObject对象读取本地文件。该网页如果单独在浏览器中打开,Scripting.FileSystemObject可以正常工作。但如果放在了工程中运行,就提示“Automation服务器不能创建对象”。我的开发环境是Eclipse3.1,工程中使用了Struts1.2和Hibernate3.1,还用到了prototype框架。请问,同样的文件为什么在两种情况中会有不同的结果?

解决方案 »

  1.   

    安全问题!
    当你双击磁盘上一个html文件时,不如a.html,是以当前的登陆系统的用户名为身份的,比如administrator,这样,当前省份就有足够的权限来执行javascript中的脚本。
    但是,如果是通过web站点访问,比如在ie中输入http://127.0.0.1/a.html这时的身份就不再是administator了,ie的安全机制开始其作用了,阻止了创建活动对象的代码。这归结来就是浏览器的安全限制,靠程序或代码难以突破!
      

  2.   

    那没有很好的办法了吗?我的项目中要用它来判断本地文件的大小,我对ActiveXObject对象不熟悉,如果这个方法不行,那还有其他的方法吗?
      

  3.   

    我想,有得必有失啊,如果我来解决这个问题的话,可能会考虑两种做法1。先让用户把文件上传到服务器,在服务器一端对文件大小进行验证,当然,如果原本就九十希望能够在客户端判断文件大小以便控制用户能否上传文件的话,此法就不灵了:)2。自己写个activex控件,在自己的页面里嵌入,它在客户端负责访问本地的文件并进行判断,同时通过javascript与你的页面进行交互,当然,自己写的activex控件同样需要客户端安装才行,尽管安装的过程可以是自动的,但是,当前浏览器的安全机制是可以限制下载和安装activex控件的,如果你的页面的用户群是特定的,比如是一个公司的内部用户,那还好办,但是,如果你的页面是为普通老百姓使用的,那么,你如何让用户信任你的activex并安装,那就难了