用webbrowser浏览:上传文件,并在新框架显示结果的如下html代码:
T = T & "<form method=""POST"" target=""_blank"" enctype=""multipart/form-data"" action=""/vAjDkUp"" >" & vbCrLf
T = T & "文件:<input type=file name=""MyFile"">" & vbCrLf
T = T & "<br><input type=submit value =""开始上传""></form></div></td></tr>" & vbCrLf
结果,webbrowser会遇到困难,无法正确发送post内容. 上面代码如果取消 target=""_blank"" 将运行正常.
原代码大致是这样:遇到新框架后产生事件:
Private Sub Webbs_NewWindow2(Index As Integer, ppDisp As Object, Cancel As Boolean)
 Set ppDisp = webbs(index+1)  '指向新控件
end sub
'然后产生事件
Private Sub Webbs_BeforeNavigate2(Index As Integer, ByVal pDisp As Object, Url As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
End Sub
这样结果是webbrowser用Get方法,发送了请求,当然出错了。
问题:如何在后一个事件中编写处理代码呢?手工处理:enctype=""multipart/form-data"" 不可取,再说如何取MyFile属性呢?
能否让webbrowser自己完成这个过程呢?
请高手指点.

解决方案 »

  1.   

    不是太明白你讲的问题为什么不直接用sock去post呢?
    你上传一下文件的时候,抓一下HTTP头文件,看是怎么写的.
      

  2.   

    我做的是浏览器不只是专门发文件的,所以只能用webbrowser呀.我的问题可以这样说:
    用webbrowser做浏览器,浏览有上传文并且开新框架的网页时出错.该如何编写代码,使得webbrowser
    正确浏览该网页?
    该出错网页的html代码为:
    <form method="POST" target="_blank" enctype="multipart/form-data" action="/Upfile.asp" > 
    文件: <input type=file name="MyFile">
    <br> <input type=submit value ="开始上传"> </form>  
    以上网页本身没错,IE能正确访问浏览它.
      

  3.   

    抓了错误的文件头:成了GET /UpFile.asp 
    我分析其原因是因为我没有处理下面事件:
    Private Sub Webbs_BeforeNavigate2(Index As Integer, ByVal pDisp As Object, Url As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) 
    End Sub 我只处理了以下事件:
    Private Sub Webbs_NewWindow2(Index As Integer, ppDisp As Object, Cancel As Boolean) 
    Set ppDisp = webbs(index+1)  '指向新控件 
    end sub 说明:用其它框架代码验证过 Webbs_NewWindow2处理没有错.
    而事件:Webbs_BeforeNavigate2 如何处理正是我要问的.