Asp classic 使用Form POST将文件发送到另一台服务器
我需要能够发送一个文件到另一个网站从服务器端的经典ASP代码。另一个网站有一个带有文件上传控件的表单,我需要模拟发布到此表单 我发现了一些似乎非常适合该作业的示例代码,它可以毫无错误地上传文件,但收到的文件无效,当我在另一台服务器上检查它时,在二进制数据中包含不应该存在的部分发布数据之前,文件的开头就出现了,例如: 内容类型:图像/jpegAsp classic 使用Form POST将文件发送到另一台服务器,asp-classic,Asp Classic,我需要能够发送一个文件到另一个网站从服务器端的经典ASP代码。另一个网站有一个带有文件上传控件的表单,我需要模拟发布到此表单 我发现了一些似乎非常适合该作业的示例代码,它可以毫无错误地上传文件,但收到的文件无效,当我在另一台服务器上检查它时,在二进制数据中包含不应该存在的部分发布数据之前,文件的开头就出现了,例如: 内容类型:图像/jpeg 内容配置:表单数据;name=“file”;filename=“archivebox.jpg” ÿØÿÿa 当我通过表单上传数据时,接收网站的代码工作正常,
内容配置:表单数据;name=“file”;filename=“archivebox.jpg” ÿØÿÿa 当我通过表单上传数据时,接收网站的代码工作正常,所以看起来问题出在上面的代码上
如果这段代码不起作用,其他人能告诉我另一个以这种方式提交文件的示例的方向吗?使用我问题中链接中的代码示例,我对其进行了修改以手动生成请求,结果成功了。我还转换为一个函数,该函数接受一个二进制文件和一个参数,并发布请求
Function PostDocument(intDocumentID, binFile, strFilename, strContentType)
Dim objHttp, strBoundary, strRequestStart, strRequestEnd, binPost
Dim objStream
strBoundary = "---------------------------9849436581144108930470211272"
Set objHttp = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
strRequestStart = "--" & strBoundary & vbCrlf &_
"Content-Disposition: form-data; name=""id""" & vbCrlf &_
vbCrlf &_
intDocumentID & vbCrlf &_
vbCrlf &_
"--" & strBoundary & vbCrlf &_
"Content-Disposition: form-data; name=""file""; filename=""" & strFilename & """" & vbCrlf &_
"Content-Type: " & strContentType & vbCrlf &_
vbCrlf
strRequestEnd = vbCrLf & "--" & strBoundary & "--"
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = adTypeBinary '1
objStream.Mode = adModeReadWrite '3
objStream.Open
objStream.Write StringToBinary(strRequestStart)
objStream.Write binFile
objStream.Write StringToBinary(strRequestEnd)
objStream.Position = 0
binPost = objStream.Read
Response.Write binPost
objStream.Close
Set objStream = Nothing
objHttp.Open "POST", "(url removed)", False, "(username removed)", "(password removed)"
objHttp.setRequestHeader "Content-Type", "multipart/form-data; boundary=""" & strBoundary & """"
objHttp.Send binPost
PostDocument = objHttp.ResponseText
Set objHttp = Nothing
End Function
Function StringToBinary(toConvert)
Dim objStream, data
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Charset = "ISO-8859-1"
objStream.Type = adTypeText '2
objStream.Mode = adModeReadWrite '3
objStream.Open
objStream.WriteText toConvert
objStream.Position = 0
objStream.Type = adTypeBinary '1
StringToBinary = objStream.Read
objStream.Close
Set objStream = Nothing
End Function
您确定文件名在另一行吗?如果是这样的话,那就错了,它应该和
内容配置
在同一行。奇怪的是,有人编辑了我问题的这一部分。我现在已经修好了。文件名与内容处置在同一行,文件开头的“内容类型”中缺少“Co”。谢谢。约翰,那个人就是安东尼本人(你可以在中看到)——下次你可以回滚编辑,而不是重写文章。不管怎样,请把你正在使用的实际代码发出来,也许你遗漏了什么。