2012-08-17 55 views
-1

我一直在研究这个问题已经有几天了,并且没有取得任何进展。在type =“file”html元素上设置文件上传

以编程方式,我已经能够调用“选择要上传的文件”对话框,但每当它输入文件和路径并尝试提交它时,它将不会接受输入值。

WebBrowser.Document.GetElementById("field-file").InvokeMember("click") 

允许触发.click()方法。

每当我提交它,它给我一个错误,该字段必须填写。 在提交之前是否需要调用另一个事件?

据我了解,由于安全原因,此输入类型的值属性被禁用 - 但当然,这只是一个找到解决方法的问题?

+1

您可能会发现任何“解决方法”都将是特定浏览器中的严重安全漏洞,而不是您可以或应该依赖的任何操作。 – Rawling 2012-08-17 11:56:07

+0

不,没有自动的方式使用JavaScript代码来从别人的电脑“偷取”文件而不询问它们。如果您发现这种解决方法,请立即将其报告给浏览器供应商的错误列表。 – David 2012-08-17 11:57:47

+0

我并非试图“窃取”文件 - 我试图从我的电脑上传文件到我有权访问的网站,只要文件在我的电脑上发生变化。不幸的是,我目前能做到的唯一方法就是自己选择文件。但由于我并不总是在我的办公桌前,我正在寻找一种自动执行此操作的方法。 – 2012-08-17 12:17:18

回答

1

正如你所说的“出于安全原因”。所以,不应该有解决方法。否则,这将是一个安全缺陷,is not intended,一定会被修复。

在另一方面,W3C定义following

用户代理可以使用该值属性的值作为初始 文件名。

但我不知道任何目前的浏览器,支持这一点。

+1

我发现了一个没有用户交互的方法 - 谢谢你的帮助。幸运的是,我不相信“这是不可能的”。 – 2012-08-17 14:35:31

+1

好的。如果您的解决方案仍然适合相同的问题,那么当您与我们分享时,我们也会很幸运。 – 2012-08-17 14:40:58

+1

找到的唯一方法是使用SendKeys.SendWait函数“模拟”用户。我使用了一系列FindWindows测试来确定Dialog是否实际上可见,并填充了所需的字段并将信息返回给了html表单。然后我通过测试htmlelement的值然后提交表单来测试接受这个文件。有点粗糙,但功能。现在就足够了。 – 2012-08-17 15:10:30

相关问题