Я пытаюсь загрузить обычный текстовый файл на классическую страницу asp и получить сообщение об ошибке.Vba Загрузить текстовый файл
<p>Microsoft VBScript runtime </font> <font face="Arial" size=2>error '800a01a8'</font>
<p>
<font face="Arial" size=2>Object required: 'fields(...)'</font>
HTML код
<form action="upload.asp" method=post ENCTYPE="multipart/form-data">
File :
<input type="file" class="form_field" name="File1" accept="image/jpeg">
<input type="submit" class="form_pb" Name="Action" value="Send File">
</form>
Vba код, чтобы установить пост переменной и отправить запрос.
Const STR_BOUNDARY As String = "a832972453175"
Dim nFile As Integer
Dim baBuffer() As Byte
Dim sPostData As String
....
'--- read file
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
sPostData = "--" & STR_BOUNDARY & vbCrLf & _
"Content-Disposition: form-data; name=""File1""; filename=""" & Mid$(sFileName, InStrRev(sFileName, "\") + 1) & """" & vbCrLf & _
"Content-Type: text/plain" & vbCrLf & vbCrLf & _
sPostData & vbCrLf & vbCrLf & _
STR_BOUNDARY & vbCrLf & _
"Content-Disposition: form-data; name=""Action""" & vbCrLf & _
vbCrLf & "Send File" & vbCrLf & _
"--" & STR_BOUNDARY & "--"
With WinHttpReq
'UPLOAD REQUEST
.Open "POST", sUrl, False
.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY
.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
.Send (sPostData)
end with
У меня есть доступ к исходному коду страницы, которая является классической страницей осины и загрузка выполняется с VBScript работает на сервере.
Ошибка в том, что аргумент File1 = "", а затем загрузка не запускается.
Несмотря на то, что атрибут accept в html-коде предназначен только для «image/jpeg», я могу нормально загрузить при навигации с помощью браузера.
Я считаю, что что-то не так с моей переменной sPostData в коде Vba.
Файл с функции загрузки здесь: https://www.royalholloway.ac.uk/resources/ASP/PStruh-CZ/1.3/upload.inc
Любой человек может увидеть, что я делаю неправильно?
ошибки в 'Требуется объект:«поля (...) '' предоставленный код не показывает упоминание коллекции 'fields', поэтому я предлагаю вам искать не то место. Не была ли ошибка содержать имя страницы и номер строки? – Lankymart
Ошибка вызвана тем, что результат функции GetUpload в файле upload.inc пуст. Как я уже опубликовал, есть условие, чтобы начать загрузку (если поля («Файл1»). FileName = «« ничего не запускать загрузку » – luckasx
Я не думаю, что это когда-нибудь будет работать, что представляет собой двоичную многочастную информацию в виде строки. Сообщение о многостраничной форме обрабатывает всю информацию о границах, которую вы не можете передать, прежде чем она будет обработана, вы просто закончите с неверным преобразованием. Попробуйте просмотреть запрос с помощью [Fiddler] (http://www.telerik.com/fiddler), чтобы посмотреть, как выглядит запрос RAW. – Lankymart