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!!
<%@ 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
Uploader.Upload()
' Check if any files were uploaded
If Uploader.Files.Count = 0 Then
Response.Write "File(s) not uploaded."
Else
' 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>")
Response.Write("<script>window.location.href='upLoadStart.asp'</script>")
else
' Else Save the file
File.SaveToDisk "C:\\Inetpub\\wwwroot\\CustomerServices\\Documents"
end if
Next
' Confirm file saved and redirect to previous page if more files to be uploaded
Response.Write("<script>alert('File Saved')</script>")
Response.Write("<script>window.location.href='upLoadStart.asp'</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
Files.RemoveAll()
Set Files = Nothing
End If
If IsObject(mcolFormElem) Then
mcolFormElem.RemoveAll()
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
If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName), oUploadFile
Else
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)
Loop
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)))
Next
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)))
Next
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)))
Next
oFile.Close
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
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.