<% Dim maxFileSize MaxFileSize = "100000" Dim CompanyName CompanyName = "POPPIN" Dim CompanyRedirect CompanyRedirect = "upload.asp" Dim ImageDir ImageDir = "../UPLOADS/" if request("filedelete") <> "" then Call DeleteFile(CStr(request("filedelete"))) end if Function GetFileName(UploadString) ' used in conjunction with the File Upload Sub Called PutData to extract the file name ' By Oliver Schnars FU = Mid(UploadString,InstrRev(UploadString,"\")+1) GetFileName = FU End Function Sub PutData(FileToPut) set INImage = Server.CreateObject("ADODB.Command") INImage.ActiveConnection = MM_ADOSQL_STRING INImage.CommandText = "dbo._SP_INSERT_IMAGES_ADM" INImage.CommandType = 4 INImage.CommandTimeout = 0 INImage.Prepared = true INImage.Parameters.Append INImage.CreateParameter("RETURN_VALUE", 3, 4) INImage.Parameters.Append INImage.CreateParameter("@FileName", 129, 1,100,trim(FileToPut)) INImage.Execute() End Sub Call CreateFolder(CompanyName) set SAHB = Server.CreateObject("SoftArtisans.FileUp") SAHB.MaxBytes = MaxFileSize ' much better solution ' simply change the CompanyImageDir to reflect the upload directory ' by Oliver Schnars Set FS = Server.CreateObject("Scripting.FileSystemObject") Dim CompanyImageDir: CompanyImageDir = ImageDir Dim XPath: XPath = CompanyImageDir & CompanyName & "_Images" & "/" Set Folder = FS.GetFolder(Server.MapPath(XPath)) Dim UploadPath: UploadPath = Folder & "\" SAHB.Path = UploadPath 'default path SAHB.OverwriteFiles = true'overwrite existing dim SAHB_TransferStatus, SAHB_ErrorLog, SAHB_UseMTS SAHB_UseMTS = false'use mts SAHB_TransferStatus = 0 SAHB_ErrorLog = "" Set FS = Nothing function IsACabOrZip(compareString) dim ReturnVal ReturnVal = false if (InStr(UCase(compareString), ".ZIP")>0 OR InStr(UCase(compareString), ".CAB")>0) then ReturnVal = true end if IsACabOrZip = ReturnVal end function function FileNameFromPath(pathString) dim returnValue returnValue="" if (cStr(pathString)<>"") then if (InStr(pathString, "/")>0) then returnValue = StrReverse(pathString) returnValue = Left(returnValue, InStr(returnValue, "/")-1) returnValue = StrReverse(returnValue) else if (InStr(pathString, "\")>0) then returnValue = StrReverse(pathString) returnValue = Left(returnValue, InStr(returnValue, "\")-1) returnValue = StrReverse(returnValue) else returnValue = pathString end if end if end if FileNameFromPath = returnValue end function function CompressFiles(FileArray, AsName, Delete, OverWrite, Increment, ExistsRedirect, ArchiveAs) set SAFM = Server.CreateObject("SoftArtisans.FileManager") set Arch = Server.CreateObject("Softartisans.Archive") dim CreateIt, archiveName, FileExtension, ArchType, h CreateIt = true archiveName = StrReverse(cStr(AsName)) FileExtension=Left(archiveName, InStr(archiveName, ".")-1) FileExtension=UCase(StrReverse(FileExtension)) archiveName = StrReverse(archiveName) ArchType=1 if (FileExtension="CAB") then ArchType=2 end if Arch.archivetype = ArchType h=2 if (SAFM.FileExists(archiveName) AND NOT OverWrite) then CreateIt = false if (ArchiveAs <> "") then SAFM.CopyFile archiveName, AppendToFileName(archiveName,ArchiveAs) CreateIt = true end if if (Increment) then while (SAFM.FileExists(archiveName)) archiveName = AppendToFileName(AsName,"("&h&")") h = h+1 wend CreateIt = true end if if (ExistsRedirect <> "") then Response.Redirect(ExistsRedirect) end if end if if (CreateIt) then Arch.CreateArchive(archiveName) end if for z=0 to UBound(FileArray)-1 if (SAFM.FileExists(FileArray(z))) then Arch.AddFile(FileArray(z)) end if next Arch.CloseArchive() if (Delete) then for a=0 to UBound(FileArray) if (SAFM.FileExists(FileArray(a)) AND FileArray(a) <> archiveName) then SAFM.DeleteFile(FileArray(a)) end if next end if end function function ExtractFile(FileName, ToPath, Delete, PreservePath) set Arch = Server.CreateObject("SoftArtisans.Archive") dim ExtractedFiles, ArchiveName, ExtractPath, FileExtension, ArchType, FullPath ExtractedFiles = "" ArchiveName = FileName ExtractPath = ToPath FileExtension=UCase(Right(FileName, InStrRev(FileName, "."))) ArchType=1 FullPath = "" if (FileExtension="CAB") then ArchType=2 end if Arch.ArchiveType = ArchType Arch.OpenArchive(ArchiveName) Arch.PreservePath = PreservePath Arch.ExtractPath = ExtractPath Arch.Extract() for each item in Arch.Entries if (ExtractedFiles<>"") then ExtractedFiles = ExtractedFiles & "|" end if if (Arch.preservepath) then FullPath = ToPath & item.Path & item.Name else FullPath = ToPath & item.Name end if ExtractedFiles = ExtractedFiles & FullPath next Arch.CloseArchive() if (Delete) then set SAFM = Server.CreateObject("SoftArtisans.FileManager") SAFM.DeleteFile(FileName) end if ExtractFile = ExtractedFiles end function function AppendToFileName(StartName, AppendedText) dim ReturnName ReturnName = "" FileName = StrReverse(StartName) FileName = Right(FileName, InStrRev(StartName, ".")-1) FileName = StrReverse(FileName) TempText = Right(FileName, LEN(AppendedText)) if (TempText <> AppendedText) then FileExtension = StrReverse(Left(StrReverse(StartName), InStr(StrReverse(StartName), "."))) ReturnName = FileName & AppendedText & FileExtension end if AppendToFileName = ReturnName end function function UploadFile(SAFileUp, UploadFrom, AsFileName, Increment, ExistsRedirect, ArchiveAs) dim FileUploaded, DefaultFileName FileUploaded = "" DefaultFileName = "" if (AsFileName="") then DefaultFileName = SAFileUp.path & FileNameFromPath(SAFileUp.Form(UploadFrom).UserFileName) else DefaultFileName = AsFileName end if if (SAFileUp.OverwriteFiles = true) then if (AsFileName = "") then SAFileUp.Form(UploadFrom).Save() else SAFileUp.Form(UploadFrom).SaveAs(DefaultFileName) end if FileUploaded = DefaultFileName else set SAFM = Server.CreateObject("SoftArtisans.FileManager") if (SAFM.FileExists(DefaultFileName)) then if (ArchiveAs <> "") then SAFM.CopyFile DefaultFileName,AppendToFileName(DefaultFileName,ArchiveAs) SAFM.DeleteFile(DefaultFileName) if (AsFileName="") then SAFileUp.Form(UploadFrom).Save() else SAFileUp.Form(UploadFrom).SaveAs(DefaultFileName) end if FileUploaded = DefaultFileName end if if (Increment) then dim b b=2 CurrentFileName = DefaultFileName while (SAFM.FileExists(CurrentFileName)) CurrentFileName = AppendToFileName(DefaultFileName,"("&b&")") b = b+1 wend SAFileUp.Form(UploadFrom).SaveAs(CurrentFileName) FileUploaded=CurrentFileName end if if (ExistsRedirect<>"") then Response.Redirect(ExistsRedirect) end if else if (AsFileName="") then SAFileUp.Form(UploadFrom).Save() else SAFileUp.Form(UploadFrom).SaveAs(DefaultFileName) end if FileUploaded=DefaultFileName end if end if ' ***************************************************** ' Save FileName to DB Call PutData(GetFileName(FileUploaded)) ' ***************************************************** UploadFile = FileUploaded end function if (SAHB_UseMTS) then on error resume next end if dim PassPosted_SAHB, NoMMEdit_SAHB, WA_SAFileUpAction PassPosted_SAHB = true'pass posted form NoMMEdit_SAHB = true'ignore database edit WA_SAFileUp_Action = cStr(Request.ServerVariables("SCRIPT_NAME")) if (Request.ServerVariables("Request_Method")="POST" AND (InStr(cStr(Request.ServerVariables("HTTP_REFERER")), Request.ServerVariables("SERVER_NAME")&Request.ServerVariables("URL"))<>0)) then dim Increment_SAHB, RedirectIfExists_SAHB, ArchiveAs_SAHB, Decompress_SAHB, CompressFilesAs_SAHB, RedirectPage_SAHB, SavedFileName_SAHB'declare variables dim FileArray_SAHB(1) dim NameArray_SAHB(1) FileArray_SAHB(0)="file1" NameArray_SAHB(0)="" Increment_SAHB = true'increment same filename RedirectIfExists_SAHB = ""'redirect if exists ArchiveAs_SAHB = ""'archive files as Decompress_SAHB = false'decompress files CompressFilesAs_SAHB = ""'compress files as RedirectPage_SAHB = CompanyRedirect ' redirect when done SavedFileName_SAHB="" dim SavedFileNameString SavedFileNameString = "" Redim CompressArray_SAHB(0) for x=0 to UBound(FileArray_SAHB)-1 FileName_SAHB="" if (SAHB.Form(FileArray_SAHB(x)).ContentDisposition <> "form-data") then SAHB_TransferStatus = 2 SAHB_ErrorLog = SAHB_ErrorLog & FileArray_SAHB(x) & "- Browser does not support uploads; " else if (NOT SAHB.Form(FileArray_SAHB(x)).IsEmpty) then if (SAHB.MaxBytes = SAHB.Form(FileArray_SAHB(x)).TotalBytes) then SAHB_TransferStatus = 3 SAHB_ErrorLog = SAHB_ErrorLog & FileArray_SAHB(x) & "- File exceeds maximum bytes; " else if ((NOT SAHB_UseMTS) AND Decompress_SAHB AND IsACabOrZip(SAHB.Form(FileArray_SAHB(x)).UserFileName)) then SavedFileName_SAHB = UploadFile(SAHB, FileArray_SAHB(x), NameArray_SAHB(x), Increment_SAHB, RedirectIfExists_SAHB, ArchiveAs_SAHB) if (SavedFileName_SAHB <> "") then ExtractFileString_SAHB = ExtractFile(SavedFileName_SAHB, SAHB.Path, true, (CompressFilesAs_SAHB = "")) if (ExtractFileString_SAHB <> "") then ExtractFileArray_SAHB = Split(ExtractFileString_SAHB, "|") for y=0 to UBound(ExtractFileArray_SAHB) ReDim Preserve CompressArray_SAHB(UBound(CompressArray_SAHB)+1) CompressArray_SAHB(UBound(CompressArray_SAHB)-1) = ExtractFileArray_SAHB(y) next end if SavedFileName_SAHB="" end if else SavedFileName_SAHB=UploadFile(SAHB, FileArray_SAHB(x), NameArray_SAHB(x), Increment_SAHB, RedirectIfExists_SAHB, ArchiveAs_SAHB) if (SavedFileName_SAHB <> "") then if (SavedFileNameString <> "" AND x <> 0) then SavedFileNameString = SavedFileNameString & ", " end if SavedFileNameString = SavedFileNameString & Right(SavedFileName_SAHB, InStrRev(SavedFileName_SAHB, "\")) end if end if end if else if (SAHB.Form(FileArray_SAHB(x)).UserFileName = "") then if (SAHB_TransferStatus = 0) then SAHB_TransferStatus = 1 SAHB_ErrorLog = SAHB_ErrorLog & FileArray_SAHB(x) & "- No file specified; " else if (SAHB_TransferStatus < 2) then SAHB_TransferStatus = 2 SAHB_ErrorLog = SAHB_ErrorLog & FileArray_SAHB(x) & "- File not found or has no content; " end if end if end if if ((NOT SAHB_UseMTS) AND CompressFilesAs_SAHB<>"" AND SavedFileName_SAHB<>"") then ReDim Preserve CompressArray_SAHB(UBound(CompressArray_SAHB)+1) CompressArray_SAHB(UBound(CompressArray_SAHB)-1) = SavedFileName_SAHB end if next if ((NOT SAHB_UseMTS) AND CompressFilesAs_SAHB <> "") then CompressFiles CompressArray_SAHB, CompressFilesAs_SAHB, true, SAHB.OverwriteFiles, Increment_SAHB, RedirectIfExists_SAHB, ArchiveAs_SAHB SavedFileNameString = Right(CompressFilesAs_SAHB, InStrRev(CompressFilesAs_SAHB, "\")) else if (UBound(CompressArray_SAHB) > 0) then for y=0 to UBound(CompressArray_SAHB)-1 if (y <> 0) then SavedFileNameString = SavedFileNameString & ", " end if SavedFileNameString = SavedFileNameString & Right(CompressArray_SAHB(y), InStrRev(CompressArray_SAHB(y), "\")) next end if end if if (RedirectPage_SAHB<>"") then Response.Redirect(RedirectPage_SAHB) end if else if (PassPosted_SAHB AND (cStr(Request.Form())<>"" OR cStr(Request.QueryString())<>"")) then dim PostedForm, QueryStringPassed PostedForm = cStr(Request.Form()) QueryStringPassed = cStr(Request.QueryString()) if (QueryStringPassed= "") then QueryStringPassed=PostedForm else if (PostedForm<>"undefined" AND PostedForm <> "") then QueryStringPassed = QueryStringPassed & "&" & PostedForm end if end if if (InStr(WA_SAFileUp_Action, "?")=0) then WA_SAFileUp_Action = WA_SAFileUp_Action & "?" else WA_SAFileUp_Action = WA_SAFileUp_Action & "&" end if if (NoMMEdit_SAHB) then WA_SAFileUp_Action = WA_SAFileUp_Action & Replace(QueryStringPassed, "MM_", "WA_") else WA_SAFileUp_Action = WA_SAFileUp_Action & QueryStringPassed end if end if end if if (SAHB_UseMTS AND (SAHB_TransferStatus <> 0 OR Err <> 0)) then if (Err <> 0) then SAHB_ErrorLog = SAHB_ErrorLog & "An unknown error occurred unrelated to the upload action; " ObjectContext.SetAbort end if %> <% Sub CreateFolder(FolderName) ' creates folder for client if it doesn't exist ' by Oliver 'Wizard' Schnars Dim CompanyImageDir: CompanyImageDir = ImageDir ' specify directory here Dim NewFolder: NewFolder = Server.MapPath(CompanyImageDir & FolderName & "_Images") Dim PrintFolder: PrintFolder = FolderName & "_Images" 'response.write NewFolder & "
" 'response.write PrintFolder 'response.end Set FS = Server.CreateObject("Scripting.FileSystemObject") if not FS.FolderExists(NewFolder) then FS.CreateFolder NewFolder response.write "Folder: " & PrintFolder & " created !
" else response.write "Directory check O.K. " & "
" end if Set FS = Nothing End Sub Sub DeleteFile(FileName) ' will delete file specified ' by Oliver 'Wizard' Schnars ' LETS CHECK IF FILE IS BEING USED SOMEWHERE BEFORE WE DELETE IT set VERI = Server.CreateObject("ADODB.Command") VERI.ActiveConnection = MM_ADOSQL_STRING VERI.CommandText = "dbo._sp_VERIFY_IMAGE_DELETION1" VERI.CommandType = 4 VERI.CommandTimeout = 0 VERI.Prepared = true VERI.Parameters.Append VERI.CreateParameter("RETURN_VALUE", 3, 4) VERI.Parameters.Append VERI.CreateParameter("@FileToDelete", 129, 1,50,Trim(FileName)) SET rsCHECK = VERI.Execute() If (NOT rsCHECK.EOF) OR (NOT rsCHECK.BOF) Then ' Check for Model Images in tblModels If UCase(Trim(rsCHECK("Status"))) = "INUSEM" Then response.write "ERROR: " & FileName & " is being used at the page: " & rsCHECK("PageName") & "! Image can NOT be deleted!
" rsCHECK.Close() Exit Sub End If End If Dim CompanyImageDir: CompanyImageDir = ImageDir Dim Path: Path = CompanyImageDir & CompanyName & "_Images" & "/" Set FS = Server.CreateObject("Scripting.FileSystemObject") Set Folder = FS.GetFolder(Server.MapPath(Path)) Dim FileToDelete: FileToDelete = Folder & "\" & FileName if not FS.FileExists(FileToDelete) then response.write "ERROR: " & FileName & " does not exist !
" else ' Delete the file FS.DeleteFile(FileToDelete) set DELImage = Server.CreateObject("ADODB.Command") DELImage.ActiveConnection = MM_ADOSQL_STRING DELImage.CommandText = "dbo._SP_DELETE_IMAGES_ADM" DELImage.CommandType = 4 DELImage.CommandTimeout = 0 DELImage.Prepared = true DELImage.Parameters.Append DELImage.CreateParameter("@FileName", 129, 1,50,Trim(FileName)) DELImage.Execute() Response.write "File: " & FileName & " deleted !
" end if Set FS = Nothing End Sub Function CalcFile(file) ' Calculates the actual file size and prints it out in a nice way ' by Oliver 'Wizard' Schnars with help from James Peters the Calculus Expert if Int(file) > 1024 then sizename = " KB" CalcFile = round(int(file)/1024,2) & sizename else sizename = " bytes" CalcFile = File & sizename end if End Function Sub ShowFiles(CompanyName) 'will show all important file information for each file in clinet's directory ' by Oliver 'Wizard' Schnars Dim CompanyImageDir: CompanyImageDir = ImageDir Dim Path: Path = CompanyImageDir & CompanyName & "_Images" & "/" Set FS = Server.CreateObject("Scripting.FileSystemObject") Set Folder = FS.GetFolder(Server.MapPath(Path)) ' Start printing Table Response.Write "" For Each item in Folder.Files 'alternate Background Colors if BGColor = "#99CCCC" then BGColor = "#F7F7F7" else BGColor = "#99CCCC" end if table = "" table = table + "" table = table + "" table = table + "" table = table + "" table = table + "" Response.Write table Next 'For Each Response.Write "
Filename: " & item.Name & " Size: " & CalcFile(item.Size) & "Type: " & item.Type & " Upload Date: " & item.DateCreated & " delete
" ' End Printing Table Set FS = Nothing End Sub %> <% Call CreateFolder(CompanyName) %>
      Image Upload - [ File Size Restriction: <% =MaxFileSize / 1000 %>K ]
     
Image 1:  
   
<% Call ShowFiles(CompanyName) %>