毕竟我读过这个主题,我知道如果没有某种“提升权限”,就无法从浏览器上传自动文件。
但是,提升权限是我所拥有的,因为应用程序在Intranet上运行,用户当前允许访问ActiveX控件,这使得可以使用COM进行一些文档扫描。然后需要上传保存在文件系统上的扫描文档。
现在,唯一的浏览器要求是IE7 +兼容性。但是使用IE8,将值设置为<input type="file" ... />
的唯一方法是手动单击“浏览”按钮。
是否真的无法为输入表单字段设置值,即使该站点已添加到可信站点并且已启用ActiveX代码的完全访问权限?
同样适用于Flash和Silverlight,安全策略使得无法在没有用户手动选择文件的情况下上传文件。 Silverlight可能可以在OOB模式下执行,但如果用户每次都必须单击以启用浏览器模式,那就太麻烦了。
ActiveX和Java applet可能会这样做。如果使用<input type="file" ... />
不是一个选项,是否有任何轻量级(可能是免费/开源)ActiveX控件可以处理从文件系统上传?
更新
我确实在那里深入调查了所有选项,结果证明它是安全模型的范例,这使得无法在没有用户交互的情况下从浏览器进行自动文件上传。这意味着使用必须手动交互上传文件或确认一些ActiveX控件或类似的插件来完成这项工作。如果您设法找到一种上传方式而没有一些具有提升权限的特殊插件,您可能会发现一个安全漏洞,很快就会修复。然而,这就是网络浏览器技术的设计方式。
正如Jesse所指出的,第三方ActiveX控件存在信任和许可问题。
答案 0 :(得分:5)
你是正确的,因为出于安全考虑,像Flash,Silverlight和Java这样的RIA不允许这样做,并且Silverlight OOB可信应用程序在技术上可行,但听起来并不理想。
由于你基本上是在寻找一个可以在网络安全模型中找到漏洞的组件,我怀疑你会发现很多很好的现成组件(如果你这样做,我会怀疑的)从安全的角度来看它们。)
我建议为此编写自己的ActiveX控件,但一定要考虑安全隐患。例如,您可能希望确保此控件只能由公司网络上的受信任网站使用 - 这有时称为“站点锁定”。
这是编写安全ActiveX控件的好页面:http://msdn.microsoft.com/en-us/library/bb250471(VS.85).aspx