模拟POST上传图片到某网站,困扰了三天,就要放弃了,突然想到还有CSDN这个云脑袋,重启8年前的账号,看看能否有所收获,先谢谢各位了.1.Form-data
2.data
3.requeset hearder
4.sourcecodePublic xmlhttp_noserver1 As New MSXML2.ServerXMLHTTP
Public Function Getbody_Post_koudai_IMG(ByVal URL, ByVal sPara)
'参数URL 是http://v.vdian.com/wd/item/addThumbnail
'参数sPara 是 d:\1\a.jpg
'On Error Resume Next
    Dim strFileName
    Dim arrTempFileName
    arrTempFileName = Split(sPara, "\")
    
    
    strFileName = arrTempFileName(UBound(arrTempFileName))
    Dim Pre, Po
    Dim fileContent
    '''''''组合串
    Dim strTemp
    strTemp = ""
    strTemp = strTemp & "-----------------------------7de2de2f8024e" & vbCrLf
    strTemp = strTemp & "Content-Disposition: form-data; name=""callback""" & vbCrLf
    strTemp = strTemp & vbCrLf
    strTemp = strTemp & "imgcallback_" & DateDiff("s", "1970-01-01 00:00:00", Now) & "_" & Mid(CStr(dblRnd()), 2) & vbCrLf
    strTemp = strTemp & "-----------------------------7de2de2f8024e" & vbCrLf
    strTemp = strTemp & "Content-Disposition: form-data; name=""param""" & vbCrLf
    strTemp = strTemp & vbCrLf
    strTemp = strTemp & "{""userID"":""*****"",""***"":""***""}" & vbCrLf
    strTemp = strTemp & "-----------------------------7de2de2f8024e" & vbCrLf
    strTemp = strTemp & "Content-Disposition: form-data; name=""imgs[]""; filename=""" & strFileName & """" & vbCrLf
    strTemp = strTemp & "Content-Type: image/pjpeg" & vbCrLf
    strTemp = strTemp & "" & vbCrLf
    Pre = strTemp
    
        
    fileContent = GetFile(sPara)  '''方法详情在下面
    
        strTemp = ""
    strTemp = strTemp & "-----------------------------7de2de2f8024e--"
    Po = strTemp    
        Dim strPost As String          
          Const adLongVarBinary = 205
          Dim rs: Set rs = CreateObject("ADODB.Recordset")
          Dim lenPost As Long
          lenPost = Len(Pre) + LenB(fileContent) + Len(Po)
          rs.Fields.Append "b", adLongVarBinary, Len(Pre) + LenB(fileContent) + Len(Po)          rs.Open
          rs.AddNew
            Dim LenData
            'Convert Pre string value To a binary data
            LenData = Len(Pre)
            rs("b").AppendChunk (StringToMB(Pre) & ChrB(0))
            Pre = rs("b").GetChunk(LenData)
            rs("b") = ""            'Convert Po string value To a binary data
            LenData = Len(Po)
            rs("b").AppendChunk (StringToMB(Po) & ChrB(0))
            Po = rs("b").GetChunk(LenData)
            rs("b") = ""            'Join Pre + FileContents + Po binary data
            rs("b").AppendChunk (Pre)
            rs("b").AppendChunk (fileContent)
            rs("b").AppendChunk (Po)
          rs.Update
          Dim FormData
          FormData = rs("b")
          rs.Close
          Set rs = Nothing
            
    
    xmlhttp_noserver1.Open "POST", URL, False  
    
    xmlhttp_noserver1.setRequestHeader "Accept", "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */*"
    xmlhttp_noserver1.setRequestHeader "Referer", "http://v.vdian.com/vshop/1/CPC/item_do.php"
    xmlhttp_noserver1.setRequestHeader "Accept-Language", "zh-cn"
    xmlhttp_noserver1.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52)"
    xmlhttp_noserver1.setRequestHeader "Content-Type", "multipart/form-data; boundary=---------------------------7de242278024e"
    'xmlhttp_noserver1.setRequestHeader "Accept-Encoding", "gzip, deflate"
    xmlhttp_noserver1.setRequestHeader "Host", "v.vdian.com"
    xmlhttp_noserver1.setRequestHeader "Content-Length", lenPost 'objTemp.SIZE
    xmlhttp_noserver1.setRequestHeader "Connection", "Keep-Alive"
    xmlhttp_noserver1.setRequestHeader "Cache-Control", "no-cache"
    xmlhttp_noserver1.setRequestHeader "Cookie", "WD_clear_domain=1; _ga=GA1.2*; _gat=1; WD_client_rememberCountryCode=86; WD_client_tele=***; WD_client_country=86; WD_seller=***; WD_client_userid_raw=***; WD_client_***_raw=***; WD_client_user_true_name=*; seller_identity=0; w=***; d=*; k=***; u=***.***; s=***"
        xmlhttp_noserver1.sEnd FormData
     
    If xmlhttp_noserver1.ReadyState = 4 Then
    
        
        Getbody_Post_koudai_IMG = getHanzi(Bytestobstr(xmlhttp_noserver1.responseBody, "utf-8"))
    Else
        Getbody_Post_koudai_IMG = Null
    End If
    Set xmlhttp_noserver1 = NothingEnd Function''' 二进制载入文件内容
Public Function GetFile(filename)
Dim Stream: Set Stream = CreateObject("ADODB.Stream")
Stream.Type = 1 'Binary
Stream.Open
Stream.LoadFromFile filename
GetFile = Stream.Read
Stream.Close
End Function5.result
{"status":{"status_code":100,"status_reason":"抱歉,系统出错了,请稍候重试。"},"result":400}6.confusion 
1. 登陆后会记录登录信息,我拿各种浏览器试验了,所以应该不存在没有登录的问题.
2.我曾经把图片整成文本fileContent = allText("c:\a.txt") 然后上传,也是报这个错.
3.'xmlhttp_noserver1.setRequestHeader "Accept-Encoding", "gzip, deflate"如果不注释这一段,返回的信息是乱码,所以我把他注释了
4. 大神们,为什么不能上传,我是否应该就此放弃了.