2013-02-02 65 views
5

可能是这个问题在过去被问过,但我已经搜索,但还没有找到它的解决方案。我怎样才能通过文件输入框使用C#中的浏览器上传文件?

我已经尝试了我发现的所有选项,但都是徒劳的。 SendKeys不起作用,因为它没有用文件路径填充文件输入框,即要上传。 由于没有可用的值属性,无法设置文件输入框“SetAttribute”值:

那就是所有。

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

我希望它自动完成,以便用户不必与应用程序进行交互。 应用程序应从给定的文件路径从硬盘中选择文件,并填写表单的其他字段,然后开始上传,全部使用Windows窗体应用程序中的浏览器控件。

找不到解决方案!

任何人都可以帮忙吗? (这是计算器我第一次的问题,因此,如果我做错什么,那么请指导,我的意思是,如果我不允许张贴这样的问题!)

下面是代码:

 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”); 它打开选择一个文件来上传对话框/弹出窗口,在那里我卡住了,因为我不知道如何动态地填充该弹出窗口,然后在文件输入框中插入文件路径。

+0

由于这是您的第一个问题,请允许我提供一些建议。我会在问题的正文中解释你的问题,而不仅仅是在标题中。如果你只依赖标题,你的实际问题可能会丢失。我还建议你展示一些代码来说明你已经尝试了什么,以及为什么它不工作。 – psubsee2003

+0

我已经添加了代码,并对我所尝试的内容进行了一些解释。可能现在它很清楚:/ – Yaaver

+0

没有建议? – Yaaver

回答

0

在将焦点设置到输入字段之前,请尝试将焦点设置到WebBrowser控件的右侧。 这对我有效。

相关问题