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

IT技术 javascript post
2021-03-04 06:10:55

笔记:

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

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

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

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

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

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

1个回答

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

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

即使我可以从我的 javascript 代码访问文件的内容?(内容,而不仅仅是路径)。
2021-04-25 06:10:55
@jsoldi 如果您有权访问内容,并且它是文本的。您可以将内容读入变量并将其作为字符串发布到服务器。
2021-04-27 06:10:55
您需要查找为 File Post 发送数据的原始格式,并自行构建。
2021-05-07 06:10:55
是的,我正在将其添加到我的答案中
2021-05-11 06:10:55
这是一个带有嵌入式 Web 浏览器的 .NET 应用程序...从技术上讲,您可以使用HttpWebRequest或实际上只是直接通过 FTP 上传:)
2021-05-12 06:10:55