www.webdeveloper.com
Results 1 to 3 of 3

Thread: ASP Upload Script Issues.

  1. #1
    Join Date
    Jun 2008
    Posts
    23

    ASP Upload Script Issues.

    Well, I've found out that I cant use "request.form" with "request.BinaryRead." The big question is, what do I do instead? Is there another method to pull all the form data into my script?

    I was reading something about objUpload, but none of it is making a whole lot of sense to me.

    Any tips?

  2. #2
    Join Date
    Jun 2008
    Posts
    23
    So I've made some progress. I found out that the idea is to use upload.form instead of request.form... Supposedly.

    I finally got the code to stop spitting errors at me, however, it's no longer working.

    Here's some small excerpts from the code if someone is willing to check them out.

    Code:
    <%@ Language=VBScript %>
    <%Option Explicit%>
    <!-- #include file="upLoadFunctions.asp" -->
    <% dim (all fields) %>
    <%
    'Check to see if title has been entered or not
    u_title=upload.form("u_title")
    if u_title = "" then
    %>
    
    THE FORM
    
    <%
    else
    u_title=upload.form("u_title")
    u_cell2=upload.form("u_cell2")
    u_cell4=upload.form("u_cell4")
    etc...
    
    Dim Uploader, File, FileSys, FilePath, newfolder, newfolderpath
    
    
    newfolderpath="c:\inetpub\wwwroot\hr\jobbuilder\application\" & month(date())& day(date())& year(date()) & "-" & ""&g_filename & "\"
    set filesys=CreateObject("scripting.filesystemobject")
    set newfolder = filesys.createfolder(newfolderpath)
    
    
    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\hr\jobbuilder\application\"& month(date())& day(date())& year(date()) & "-" & ""&g_filename & "\" &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\\hr\\jobbuilder\\application\\" & month(date())& day(date())& year(date()) & "-" & ""&g_filename & "\\"
            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.close</script>")  
    End If
    
    THE REST OF THE SCRIPT THAT DID WORK
    %>
    <%
    end if
    %>

  3. #3
    Join Date
    Jun 2008
    Posts
    23
    Also, this is the upLoadFunctions.asp that is called

    Code:
    <%
    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
    
            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
                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
    
    End Class
    %>

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles