如何在 C# 中使用 Web 浏览器通过文件输入框上传文件

本文关键字:文件 输入 浏览器 Web | 更新日期: 2023-09-27 17:57:16

可能是这个问题过去被问过,但我已经搜索过,还没有找到它的解决方案。

到目前为止,我已经尝试了我找到的所有选项,但都是徒劳的。SendKeys 不起作用,因为它不会用要上传的文件路径填充文件输入框。无法设置文件输入框"SetAttribute"值,因为没有可用的值属性:

就这样。

如果我使用 element.focus(),它会弹出"选择要上传的文件"对话框,现在我不知道如何以编程方式填充它并在文件输入框中打开它。

我希望它自动完成,以便用户不必与应用程序交互。应用程序应从给定的文件路径中从硬盘中选取文件并填写表单的其他字段,然后开始上传,所有这些都使用 Windows 表单应用程序中的 Web 浏览器控件。

没有找到解决方案!

谁能帮忙?(这是我关于stackoverflow的第一个问题,因此如果我做错了什么,请指导,我的意思是如果我不被允许发布这样的问题!

这是代码:

        HtmlElementCollection heCollection = doc.GetElementsByTagName("input");
        foreach (HtmlElement heSpan in heCollection)
        {
          string strType = heSpan.GetAttribute("type");
          string strName = heSpan.GetAttribute("name");
          if (strType.Equals("file") && strName.Equals("file"))
          {
            heSpan.Focus();
            //heSpan.SetAttribute("value", "test.jpg");
            SendKeys.Send("C:''1.txt");
            //heSpan.InnerText = "c:''1.txt";
          }
          //Title for the attachment
          if (strName.Equals("field_title"))
          {
            heSpan.InnerText = "1.txt";
          }
        }

当此代码执行时,光标开始在精细输入框中闪烁(因为我设置了heSpan.focus()),但文件路径未显示在文件输入框中。如果我实施 heSpan.InvokeMember("click");它打开选择要上传的文件对话框/弹出窗口,在那里我卡住了,因为我不知道如何动态填充该弹出窗口,然后在文件输入框中插入文件路径。

如何在 C# 中使用 Web 浏览器通过文件输入框上传文件

尝试将

焦点设置为 WebBrowser 控件,然后再将焦点设置为输入字段。这对我有用。