求:winform 可否通过桌面的文件拖放实现给webbrowser中的页面动态创建已赋值的表单文件域

he_8134 2008-12-23 12:55:08
能否实现?

比如winform程序中放了一个webbrowser控件,浏览器控件指向一个http://xxx.com/upload.aspx页面,该页面有一个表单~
表单里有个文件域`~~<input type="file" name="ff" />
通常是点击"浏览"去选择文件~~~

请问用c#代码是否可以实现,在已知本地文件路径的情况下,不让用户选择而自动添加文件路径到文件域,而且能顺利提交的?

这个用js脚本是无法突破限制的,不知道c#代码是否有"特权"实现此功能,是否是mshtml相关知识?
...全文
294 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
he_8134 2008-12-25
  • 打赏
  • 举报
回复
另外~~SendKeys.SendWait可以发送中文~~
he_8134 2008-12-25
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 0009 的回复:]
引用 17 楼 he_8134 的回复:

只能看到效果,发不出去~~


你检查一下文件路径是不是正确。

这个原理就跟用户手输是一样的,不应该发不出去。
[/Quote]

不好意思,上回没试清楚~~是可以实现的~~

不过由于其他因素影响,我的项目已经用了别的解决方案.
he_8134 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lovefootball 的回复:]
SendKeys.SendWait不能发送中文~~~~

this.webBrowser1.Document.GetElementById("upfile").Focus();
Clipboard.SetText("我");
SendKeys.SendWait("^v");
Clipboard.SetDataObject("")
[/Quote]

只能看到效果,发不出去~~
dongdong19871024 2008-12-23
  • 打赏
  • 举报
回复
关注
lovefootball 2008-12-23
  • 打赏
  • 举报
回复
SendKeys.SendWait不能发送中文~~~~

this.webBrowser1.Document.GetElementById("upfile").Focus();
Clipboard.SetText("我");
SendKeys.SendWait("^v");
Clipboard.SetDataObject("")
优途科技 2008-12-23
  • 打赏
  • 举报
回复
顶一下。
蓝色木 2008-12-23
  • 打赏
  • 举报
回复
WebBrowser1.Document.Forms(0).upfile.value=""可以吗
没有测试过
RexZheng 2008-12-23
  • 打赏
  • 举报
回复
this.webBrowser1.Url = new Uri("about:blank");
this.webBrowser1.Document.Write("<input type=\"file\" id=\"upfile\">");





this.webBrowser1.Document.GetElementById("upfile").Focus();
SendKeys.SendWait("C:\\boot.ini");
RexZheng 2008-12-23
  • 打赏
  • 举报
回复
应该可以,试一下
zt_100094 2008-12-23
  • 打赏
  • 举报
回复
winform倒是可以,webbrowser里面??!!
能不能用winform获得句柄,然后向webbrowser里传参呢?
compleat 2008-12-23
  • 打赏
  • 举报
回复
。。。,对我来说这个要求是变态级别的
帮顶
leiminlovesoft 2008-12-23
  • 打赏
  • 举报
回复
学习
leiminlovesoft 2008-12-23
  • 打赏
  • 举报
回复
学习
sxmonsy 2008-12-23
  • 打赏
  • 举报
回复
能不能减少操作环节.
单线程加锁 2008-12-23
  • 打赏
  • 举报
回复
我试过OFFICE就可以加进去的。
much0726 2008-12-23
  • 打赏
  • 举报
回复
winform倒是可以,webbrowser里面??!!
能不能用winform获得句柄,然后向webbrowser里传参呢?
heyu1000 2008-12-23
  • 打赏
  • 举报
回复
直接拖上去?不大可能吧,你可以把现在的页面做成组件然后加到工具箱里面试试看!
RexZheng 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 0009 的回复:]
C# codethis.webBrowser1.Url = new Uri("about:blank");
this.webBrowser1.Document.Write("<input type=\"file\" id=\"upfile\">");





C# code
this.webBrowser1.Document.GetElementById("upfile").Focus();
SendKeys.SendWait("C:\\boot.ini");
[/Quote]

如果你不需要等待响应,可以用SendKeys.Send(),执行速度快一点。
RexZheng 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lovefootball 的回复:]
SendKeys.SendWait不能发送中文~~~~

this.webBrowser1.Document.GetElementById("upfile").Focus();
Clipboard.SetText("我");
SendKeys.SendWait("^v");
Clipboard.SetDataObject("")
[/Quote]

编码问题,跟你的测试环境有关。

PS:为什么要借助剪切板?
RexZheng 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 he_8134 的回复:]

只能看到效果,发不出去~~
[/Quote]

你检查一下文件路径是不是正确。

这个原理就跟用户手输是一样的,不应该发不出去。
加载更多回复(2)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧