以编程方式设置 type=“file” 输入 HTML 元素的值

Programmatically set the value of a type="file" input HTML element?

本文关键字:输入 HTML 元素 file 方式 编程 设置 type      更新时间:2023-09-26

注意:

下面的答案反映了 2009 年旧版浏览器的状态。现在,您实际上可以在 2017 年使用 JavaScript 动态/编程方式设置文件输入元素的值。

有关详细信息,请参阅此问题的答案以及演示:如何以编程方式设置文件输入值(即:
拖放文件时)?

我需要做的是以编程方式从使用 .NET WebBrowser 的应用程序的 javascript 代码向服务发送 POST 请求,该应用程序基本上是一个嵌入式 Internet Explorer。此服务要求其中一个字段为"文件"。

那么,有没有办法在表单中设置"文件"输入的值,因为我有文件的内容,例如在字节数组中(而不是文件的路径;我不是在试图从这里的用户那里窃取文件:))。

或者也许是一种显式创建和发送 POST 请求而不是动态创建表单的方法?

我需要使用将在我WebBrowser中运行的JavaScript代码(想想IE)。这可能吗?

不幸的是,

这是不可能的,因为这将是一个安全问题。Javascript对文件输入字段的控制非常有限。否则,人们可以使用它来从用户的计算机中窃取文件。

由于您可以控制浏览器,因此您可以使用普通的HTTPWebRequest发送文件,但不能在JavaScript中完成。