Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp classic 使用Form POST将文件发送到另一台服务器_Asp Classic - Fatal编程技术网

Asp classic 使用Form POST将文件发送到另一台服务器

Asp classic 使用Form POST将文件发送到另一台服务器,asp-classic,Asp Classic,我需要能够发送一个文件到另一个网站从服务器端的经典ASP代码。另一个网站有一个带有文件上传控件的表单,我需要模拟发布到此表单 我发现了一些似乎非常适合该作业的示例代码,它可以毫无错误地上传文件,但收到的文件无效,当我在另一台服务器上检查它时,在二进制数据中包含不应该存在的部分发布数据之前,文件的开头就出现了,例如: 内容类型:图像/jpeg 内容配置:表单数据;name=“file”;filename=“archivebox.jpg” ÿØÿÿa 当我通过表单上传数据时,接收网站的代码工作正常,

我需要能够发送一个文件到另一个网站从服务器端的经典ASP代码。另一个网站有一个带有文件上传控件的表单,我需要模拟发布到此表单

我发现了一些似乎非常适合该作业的示例代码,它可以毫无错误地上传文件,但收到的文件无效,当我在另一台服务器上检查它时,在二进制数据中包含不应该存在的部分发布数据之前,文件的开头就出现了,例如:

内容类型:图像/jpeg
内容配置:表单数据;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”。谢谢。约翰,那个人就是安东尼本人(你可以在中看到)——下次你可以回滚编辑,而不是重写文章。不管怎样,请把你正在使用的实际代码发出来,也许你遗漏了什么。