我被困在(我认为)应该很简单的事情上,但我不知道该怎么做。我在 SO 或 Google 上都找不到任何信息。
我们有一个网络应用程序,它从我们的站点获取数据并自动将其发布到另一个 API。
我们还想通过二进制文件发送 - 例如,我们将从本地 URL 获取文件并将其内容发布到另一个站点。
有人能指出我正确的方向吗?例如,我是否需要以某种方式将文件 URL 嵌入数据中并作为 multipart/form-data 发布?
我被困在(我认为)应该很简单的事情上,但我不知道该怎么做。我在 SO 或 Google 上都找不到任何信息。
我们有一个网络应用程序,它从我们的站点获取数据并自动将其发布到另一个 API。
我们还想通过二进制文件发送 - 例如,我们将从本地 URL 获取文件并将其内容发布到另一个站点。
有人能指出我正确的方向吗?例如,我是否需要以某种方式将文件 URL 嵌入数据中并作为 multipart/form-data 发布?
我创建了这些经典 ASP 函数来将文件发布到另一台服务器。希望它也会对您有所帮助。
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