模擬POST上傳圖片到某網站,困擾了三天,就要放棄了,突然想到還有CSDN這個云腦袋,重啟8年前的賬號,看看能否有所識訓,先謝謝各位了.
1.Form-data

2.data

3.requeset hearder

4.sourcecode
Public 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 = Nothing
End 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 Function
5.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. 大神們,為什么不能上傳,我是否應該就此放棄了.
uj5u.com熱心網友回復:
let me tryuj5u.com熱心網友回復:
let me tryuj5u.com熱心網友回復:
幫頂
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/108098.html
標籤:網絡編程
下一篇:Sonar+TFS+VS集成問題
