Contact US

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

VBScript FAQ

ASP/VBScript File Upload

How can I upload files using JUST vbscript and asp? by anyideas
Posted: 3 May 02 (Edited 3 May 02)

I trawled the web for ages looking for a simple free pure asp / vbscript file upload.

I finally found one that I modified a little to check if a file already exists in the specified upload directory, and if so donÆt perform the upload.

The original upload was by Jacob Gilley and can be found at http://www.asp101.com/articles/jacob/scriptupload.asp

The file upload consists of 3 active server pages (asp):

1)  The form-send asp to post the intended upload file.

2)  The receiving asp to process and save the intended upload file.

3)  The functions asp which is included in the 2nd asp and contains the functions used to aid the upload (This file does not need to be edited whatsoever).

Please note û You must have VBScript 5 or above installed on your server for this to work!

Finally, many thanks to Jon Hawkins for his help in pointing me in the right direction!!

Mark Preece

Here are the files...

1) - upLoadStart.asp

<body bgcolor="PaleGoldenRod">
<form name="formUpload" id="formUpload" method="post" enctype="multipart/form-data" action="upLoadEnd.asp">
<table valign="top" align="left" bgcolor="PaleGoldenRod" width="300px" border="0" cellspacing="0" cellpadding="0">
    <tr bgcolor="PaleGoldenRod" valign="top">
        <td width="300px">
            <input type="file" size="50" name="file1">
            <input type="submit" name="submit" value="Upload File">

2) - upLoadEnd.asp

<%@ Language=VBScript %>
<%Option Explicit%>
<!-- #include file="upLoadFunctions.asp" -->
' Create the FileUploader
Dim Uploader, File, FileSys, FilePath
Set Uploader = New FileUploader

' This starts the upload process

' Check if any files were uploaded

If Uploader.Files.Count = 0 Then
    Response.Write "File(s) not uploaded."
    ' Loop through the uploaded files
    For Each File In Uploader.Files.Items
        ' Set upload Path and Filename to check if that file already exists
        FilePath = "C:\Inetpub\wwwroot\CustomerServices\Documents\"&File.FileName
        Set FileSys = CreateObject("Scripting.FileSystemObject")

        ' If intended uploaded file already exists in the specified directory do alert and redirect previous page
        If FileSys.FileExists(FilePath) then
            Response.Write("<script>alert('Sorry FileName:"& File.FileName &" Already Used!!  Please Rename Your Local File')</script>")
            ' Else Save the file
            File.SaveToDisk "C:\\Inetpub\\wwwroot\\CustomerServices\\Documents"
        end if
    ' Confirm file saved and redirect to previous page if more files to be uploaded
    Response.Write("<script>alert('File Saved')</script>")  
End If


3) - upLoadFunctions.asp

' File:      Upload.asp
' Author: Jacob "Beezle" Gilley
' Email:  avis7@airmail.net
' Date:   12/07/2000
' Comments: The code for the Upload, CByteString,
'            CWideString    subroutines was originally
'            written by Philippe Collignon...or so
'            he claims. Also, I am not responsible
'            for any ill effects this script may
'            cause and provide this script "AS IS".
'            Enjoy!

Class FileUploader
    Public  Files
    Private mcolFormElem

    Private Sub Class_Initialize()
        Set Files = Server.CreateObject("Scripting.Dictionary")
        Set mcolFormElem = Server.CreateObject("Scripting.Dictionary")
    End Sub
    Private Sub Class_Terminate()
        If IsObject(Files) Then
            Set Files = Nothing
        End If
        If IsObject(mcolFormElem) Then
            Set mcolFormElem = Nothing
        End If
    End Sub

    Public Property Get Form(sIndex)
        Form = ""
        If mcolFormElem.Exists(LCase(sIndex)) Then Form = mcolFormElem.Item(LCase(sIndex))
    End Property

    Public Default Sub Upload()
        Dim biData, sInputName
        Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos
        Dim nPosFile, nPosBound

        biData = Request.BinaryRead(Request.TotalBytes)
        nPosBegin = 1
        nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
        If (nPosEnd-nPosBegin) <= 0 Then Exit Sub
        vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
        nDataBoundPos = InstrB(1, biData, vDataBounds)
        Do Until nDataBoundPos = InstrB(biData, vDataBounds & CByteString("--"))
            nPos = InstrB(nDataBoundPos, biData, CByteString("Content-Disposition"))
            nPos = InstrB(nPos, biData, CByteString("name="))
            nPosBegin = nPos + 6
            nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
            sInputName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
            nPosFile = InstrB(nDataBoundPos, biData, CByteString("filename="))
            nPosBound = InstrB(nPosEnd, biData, vDataBounds)
            If nPosFile <> 0 And  nPosFile < nPosBound Then
                Dim oUploadFile, sFileName
                Set oUploadFile = New UploadedFile
                nPosBegin = nPosFile + 10
                nPosEnd =  InstrB(nPosBegin, biData, CByteString(Chr(34)))
                sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
                oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))

                nPos = InstrB(nPosEnd, biData, CByteString("Content-Type:"))
                nPosBegin = nPos + 14
                nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
                oUploadFile.ContentType = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
                nPosBegin = nPosEnd+4
                nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
                oUploadFile.FileData = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
                If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName), oUploadFile
                nPos = InstrB(nPos, biData, CByteString(Chr(13)))
                nPosBegin = nPos + 4
                nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
                If Not mcolFormElem.Exists(LCase(sInputName)) Then mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
            End If

            nDataBoundPos = InstrB(nDataBoundPos + LenB(vDataBounds), biData, vDataBounds)
    End Sub

    'String to byte string conversion
    Private Function CByteString(sString)
        Dim nIndex
        For nIndex = 1 to Len(sString)
           CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1)))
    End Function

    'Byte string to string conversion
    Private Function CWideString(bsString)
        Dim nIndex
        CWideString =""
        For nIndex = 1 to LenB(bsString)
           CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1)))
    End Function
End Class

Class UploadedFile
    Public ContentType
    Public FileName
    Public FileData
    Public Property Get FileSize()
        FileSize = LenB(FileData)
    End Property

    Public Sub SaveToDisk(sPath)
        Dim oFS, oFile
        Dim nIndex
        If sPath = "" Or FileName = "" Then Exit Sub
        If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\"
        Set oFS = Server.CreateObject("Scripting.FileSystemObject")
        If Not oFS.FolderExists(sPath) Then Exit Sub
        Set oFile = oFS.CreateTextFile(sPath & FileName, True)
        For nIndex = 1 to LenB(FileData)
            oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))

    End Sub
    Public Sub SaveToDatabase(ByRef oField)
        If LenB(FileData) = 0 Then Exit Sub
        If IsObject(oField) Then
            oField.AppendChunk FileData
        End If
    End Sub

End Class

Back to VBScript FAQ Index
Back to VBScript Forum

My Archive

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close