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