JavaScript向ActiveX控件传递本地文件路径读取本地文件

月下风前影

如题,我想通过网页调用ActiveX控件来读取本地文件内容,在该过程中JavaScript向ActiveX传递本地文件路径,发现出现问题,简化举例如下:

假设该控件就只是通过文件路径读取本地文本文件,并将其显示在控件中的textbox中,读取函数如下:

public void readFilePath(string Path)
  {
  FileStream fs = new FileStream(Path, FileMode.Open);
  StreamReader mreader = new StreamReader(fs);
  string s = "";
  while (!mreader.EndOfStream)
  {
  s += mreader.ReadLine()+"\n";
  }

然后在JavaScript通过引用控件调用该函数:

<script type="text/javascript">
  function readFile()
  {
  var text = document.getElementById("TextBox1");
  var fileobject = new ActiveXObject("Scripting.FileSystemObject");
  var file = fileobject.GetFile(text);
  MyActiveX.readFilePath(file.path); 
  }
</script>

调用时在网页中的textbox中输入文件路径,点击按钮读取本地文件,发现传递的文件路径不对,提示信息如图所示,窗体调用控件过程并不存在该问题,求高人指点原因及解决方法。


<script type="text/javascript">
  function readFile()
  {
  var text = document.getElementById("TextBox1");
  var fileobject = new ActiveXObject("Scripting.FileSystemObject");
  var file = fileobject.GetFile(text);
  MyActiveX.readFilePath(file.path); 
  }


最近内心很不安的感觉。。。。。。愿一切都好好的。。。。。。
宝玉
权限不够,默认情况下,浏览器是不允许js读取本地文件的

早睡早起身体好!
月下风前影
如果在控件里面用个openfiledialog打开选择文件对话框,把选择到的文件路径传递给控件内部函数,就可以打开,感觉晕乎乎的
宝玉 #2
权限不够,默认情况下,浏览器是不允许js读取本地文件的

最近内心很不安的感觉。。。。。。愿一切都好好的。。。。。。
一醉一生
好高端啊,膜拜大神!!!

其实做人和做妖是一样的,只不过人是人它妈生的,妖是妖它妈生的。
他明白了,你呢?
宝玉
应该还是浏览器权限问题,浏览器对于文件本地操作权限是很严格的。
ActiveX可以操作本地文件,但浏览器不可以。
另外浏览器和ActiveX的交互,也需要浏览器权限设置的支持,默认是不支持的。
当年的流氓软件大多数都是基于ActivieX来的。
从一楼的错误提示看,应该是浏览器没有获取到MyActiveX或者没有访问的MyActiveX对象的权限。
月下风前影 #3
如果在控件里面用个openfiledialog打开选择文件对话框,把选择到的文件路径传递给控件内部函数,就可以打开,感觉晕乎乎的

早睡早起身体好!
月下风前影
那应该怎么弄才可以获得权限呢?实在不行考虑把要读取的文件放在服务器端,但是那样的话需要传递的路径参数又该如何去写?
宝玉 #5
应该还是浏览器权限问题,浏览器对于文件本地操作权限是很严格的。 ActiveX可以操作本地文件,但浏览器不可以。 另外浏览器和ActiveX的交互,也需要浏览器权限设置的支持,默认是不支持的。 当年的流氓软件大多数都是基于ActivieX来的。 从一楼的错误提示看,应该是浏览器没有获取到MyActiveX或者没有访问的MyActiveX对象的权限。

最近内心很不安的感觉。。。。。。愿一切都好好的。。。。。。
月下风前影
不牛逼,求大家帮忙看看,出出主意
一醉一生 #4
好高端啊,膜拜大神!!!

最近内心很不安的感觉。。。。。。愿一切都好好的。。。。。。
月下风前影
谢谢宝玉,看来只能在服务器端创建固定路径下的临时文件实现该操作了
宝玉 #5
应该还是浏览器权限问题,浏览器对于文件本地操作权限是很严格的。 ActiveX可以操作本地文件,但浏览器不可以。 另外浏览器和ActiveX的交互,也需要浏览器权限设置的支持,默认是不支持的。 当年的流氓软件大多数都是基于ActivieX来的。 从一楼的错误提示看,应该是浏览器没有获取到MyActiveX或者没有访问的MyActiveX对象的权限。

最近内心很不安的感觉。。。。。。愿一切都好好的。。。。。。
宝玉
你具体啥需求?
1. 你考虑写客户端,类似于百度网盘上传客户端这种
2. 文件先传到服务端,到服务端去操作
月下风前影 #8
谢谢宝玉,看来只能在服务器端创建固定路径下的临时文件实现该操作了

早睡早起身体好!
月下风前影
谢谢宝玉,打算从服务器端操作了,呵呵
宝玉 #9
你具体啥需求? 1. 你考虑写客户端,类似于百度网盘上传客户端这种 2. 文件先传到服务端,到服务端去操作

最近内心很不安的感觉。。。。。。愿一切都好好的。。。。。。
我不是纸杯
都装activex了顺便把权限降低点
月下风前影 #10
谢谢宝玉,打算从服务器端操作了,呵呵

一个沉溺于自我完善而不能自拔的人
DOC
需求层面不靠谱,危险操作啊危险操作

天下总有散掉的宴席...
月下风前影
谢谢
我不是纸杯 #11
都装activex了顺便把权限降低点

最近内心很不安的感觉。。。。。。愿一切都好好的。。。。。。
月下风前影
恩,会慎重考虑
DOC #12
需求层面不靠谱,危险操作啊危险操作

最近内心很不安的感觉。。。。。。愿一切都好好的。。。。。。
旺仔QQ糖
看着像ActiveX对象没有加载起来,都没识别出来你的ActiveX中的方法。如果是权限的问题,那应该在readFile方法里报出异常