模拟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. 大神们,为什么不能上传,我是否应该就此放弃了.
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. 大神们,为什么不能上传,我是否应该就此放弃了.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货