File upload 使用MSXML在VB6中上载文件时内存不足(7)
我有一个使用MSXML2.ServerXMLHTTP60使用Visual Basic 6上载多部分/表单数据的功能,100MB文件大小没有问题,但当我上载200MB时,内存不足,显示“运行时错误'7'” 这是我的代码:File upload 使用MSXML在VB6中上载文件时内存不足(7),file-upload,vb6,adodb,msxml,msxml6,File Upload,Vb6,Adodb,Msxml,Msxml6,我有一个使用MSXML2.ServerXMLHTTP60使用Visual Basic 6上载多部分/表单数据的功能,100MB文件大小没有问题,但当我上载200MB时,内存不足,显示“运行时错误'7'” 这是我的代码: Public Function PostFile(sUrl As String, sJSON As String, sFileName As String) As String Const STR_BOUNDARY As String = "864d391d-4097-
Public Function PostFile(sUrl As String, sJSON As String, sFileName As String) As String
Const STR_BOUNDARY As String = "864d391d-4097-44e0-92e1-71aff17094c1"
Dim sPostData As String
Dim bytData
With CreateObject("ADODB.Stream")
.Type = 1
.Mode = 3
.Open
.LoadFromFile sFileName
bytData = .Read
End With
With CreateObject("ADODB.Stream")
.Mode = 3
.Charset = "Windows-1252"
.Open
.Type = 2
.WriteText "--" & STR_BOUNDARY & vbCrLf
.WriteText "Content-Disposition: form-data; name=""json""" & vbCrLf
.WriteText "Content-Type: application/json" & vbCrLf & vbCrLf
.WriteText sJSON & vbCrLf
.WriteText "--" & STR_BOUNDARY & vbCrLf
.WriteText "Content-Disposition: form-data; name=""uploadfile""; filename=""" & Mid$(sFileName, InStrRev(sFileName, "\") + 1) & """" & vbCrLf
.WriteText "Content-Type: application/octet-stream" & vbCrLf & vbCrLf
.Position = 0
.Type = 1
.Position = .Size
.Write bytData
.Position = 0
.Type = 2
.Position = .Size
.WriteText vbCrLf & "--" & STR_BOUNDARY & "--"
.Position = 0
.Type = 1
sPostData = StrConv(.Read, vbUnicode)
End With
With New MSXML2.ServerXMLHTTP60
.Open "POST", sUrl, True
.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY
.send ToByteArray(sPostData)
.waitForResponse 300 'second
If .Status = 200 Then PostFile = .responseText Else .abort
End With
End Function
Private Function ToByteArray(sText As String) As Byte()
ToByteArray = StrConv(sText, vbFromUnicode)
End Function
在更新上述脚本之前,我使用“打开文件方法”读取二进制文件,如下所示:
Public Function PostFile(sUrl As String, sJSON As String, sFileName As String) As String
Const STR_BOUNDARY As String = "864d391d-4097-44e0-92e1-71aff17094c1"
Dim nFile As Integer
Dim baBuffer() As Byte
Dim sPostData As String
nFile = FreeFile
Open sFileName For Binary Access Read As nFile
If LOF(nFile) > 0 Then
ReDim baBuffer(0 To LOF(nFile) - 1) As Byte
Get nFile, , baBuffer
sPostData = StrConv(baBuffer, vbUnicode)
End If
Close nFile
'--- prepare body
sPostData = "--" & STR_BOUNDARY & vbCrLf & _
"Content-Disposition: form-data; name=""json""" & vbCrLf & _
"Content-Type: application/json" & vbCrLf & vbCrLf & _
sJSON & vbCrLf & _
"--" & STR_BOUNDARY & vbCrLf & _
"Content-Disposition: form-data; name=""uploadfile""; filename=""" & Mid$(sFileName, InStrRev(sFileName, "\") + 1) & """" & vbCrLf & _
"Content-Type: application/octet-stream" & vbCrLf & vbCrLf & _
sPostData & vbCrLf & _
"--" & STR_BOUNDARY & "--"
'--- post
With New MSXML2.ServerXMLHTTP60
.Open "POST", sUrl, True
.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY
.send ToByteArray(sPostData)
.waitForResponse 300 'second
If .Status = 200 Then PostFile = .responseText Else .abort
End With
End Function
Private Function ToByteArray(sText As String) As Byte()
ToByteArray = StrConv(sText, vbFromUnicode)
End Function
但是,显示错误“运行时错误'14'”的字符串空间不足
如何处理这个错误