Do you like this article? Please, rate it and write review!
Rated:
by Aspin.com users
| |
| | Top messages |
| 4.5.2002 9:16:43 | |
| 25.10.1999 14:00:16 | |
| 22.3.2003 19:18:41 | |
Automated file upload using IE, without user interaction - VBA | Areas>Languages>VBA to v. 6 Areas>VBA>POST http method Areas>ASP / ASP.Net>File & data transfer | |
|
There are many samples which lets you accept uploaded files from multipart/form-data forms with <input type=file> in ASP on this site (See home page of Pure ASP file upload with progress).
But what to do if you want to upload some specific file without user interaction? For example, you have a next form:
<Form Action=http://127.0.0.30/util/up/free/upload.asp
Method=Post ENCTYPE="multipart/form-data">
<Input Type=File Name=FileField>
<Input Type=Submit>
</Form>
Next VBA code simulates the same submit of the form (upload of file) using IE and VBA. You can use the code in VisualBasic 5 and 6 or in Excel, Word and Access.
You can use ScriptUtils. ASPForm to accept
uploaded files in ASP. ScriptUtils. ASPForm contains
hi-performance, low resources consumption algorithm which can accept up to 2GB
of data.
UploadFile "http://127.0.0.30/util/up/free/upload.asp", _
"F:\work\Pstruh\Articles\upload\xx", "FileField"
'******************* upload - begin
'Upload file using input type=file
Sub UploadFile(DestURL As String, FileName As String, _
Optional ByVal FieldName As String = "File")
Dim sFormData As String, d As String
'Boundary of fields.
'Be sure this string is Not In the source file
Const Boundary As String = "---------------------------0123456789012"
'Get source file As a string.
sFormData = GetFile(FileName)
'Build source form with file contents
d = "--" + Boundary + vbCrLf
d = d + "Content-Disposition: form-data; name=""" + FieldName + """;"
d = d + " filename=""" + FileName + """" + vbCrLf
d = d + "Content-Type: application/upload" + vbCrLf + vbCrLf
d = d + sFormData
d = d + vbCrLf + "--" + Boundary + "--" + vbCrLf
'Post the data To the destination URL
IEPostStringRequest DestURL, d, Boundary
End Sub
'sends URL encoded form data To the URL using IE
Sub IEPostStringRequest(URL As String, FormData As String, Boundary As String)
'Create InternetExplorer
Dim WebBrowser: Set WebBrowser = CreateObject("InternetExplorer.Application")
'You can uncoment Next line To see form results
'WebBrowser.Visible = True
'Send the form data To URL As POST request
Dim bFormData() As Byte
ReDim bFormData(Len(FormData) - 1)
bFormData = StrConv(FormData, vbFromUnicode)
WebBrowser.Navigate URL, , , bFormData, _
"Content-Type: multipart/form-data; boundary=" + Boundary + vbCrLf
Do While WebBrowser.busy
' Sleep 100
DoEvents
Loop
WebBrowser.Quit
End Sub
'read binary file As a string value
Function GetFile(FileName As String) As String
Dim FileContents() As Byte, FileNumber As Integer
ReDim FileContents(FileLen(FileName) - 1)
FileNumber = FreeFile
Open FileName For Binary As FileNumber
Get FileNumber, , FileContents
Close FileNumber
GetFile = StrConv(FileContents, vbUnicode)
End Function
'******************* upload - end
| |
|
If you like this page, please include next link on your pages:
<A
Href="http://www.motobit.com/tips/detpg_uploadvbaie/"
Title="Lets you send file from a
client to www server over
http connection using IE. The
file is sent as a
result of type=file form field."
>Automated file upload using IE, without user interaction - VBA</A>
|
|