Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    New to the CF scene
    Join Date
    Nov 2007
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Begginer problem with asp

    Hey i am following a tutorial on how to upload a graphic from a website to an access database and i keep getting an an error

    First i have Loader.asp

    Code:
    <%
      ' -- Loader.asp --
      ' -- version 1.5.2
      ' -- last updated 12/5/2002
      '
      ' Faisal Khan
      ' faisal@stardeveloper.com
      ' www.stardeveloper.com
      ' Class for handling binary uploads
    
      Class Loader
        Private dict
        
        Private Sub Class_Initialize
          Set dict = Server.CreateObject("Scripting.Dictionary")
        End Sub
    
        Private Sub Class_Terminate
          If IsObject(intDict) Then
            intDict.RemoveAll
            Set intDict = Nothing
          End If
          If IsObject(dict) Then
            dict.RemoveAll
            Set dict = Nothing
          End If
        End Sub
    
        Public Property Get Count
          Count = dict.Count
        End Property
    
        Public Sub Initialize
          If Request.TotalBytes > 0 Then
            Dim binData
              binData = Request.BinaryRead(Request.TotalBytes)
              getData binData
          End If
        End Sub
    
        Public Function getFileData(name)
          If dict.Exists(name) Then
            getFileData = dict(name).Item("Value")
            Else
            getFileData = ""
          End If
        End Function
    
        Public Function getValue(name)
          Dim gv
          If dict.Exists(name) Then
            gv = CStr(dict(name).Item("Value"))
            
            gv = Left(gv,Len(gv)-2)
            getValue = gv
          Else
            getValue = ""
          End If
        End Function
    
        Public Function saveToFile(name, path)
          If dict.Exists(name) Then
            Dim temp
              temp = dict(name).Item("Value")
            Dim fso
              Set fso = Server.CreateObject("Scripting.FileSystemObject")
            Dim file
              Set file = fso.CreateTextFile(path)
                For tPoint = 1 to LenB(temp)
                    file.Write Chr(AscB(MidB(temp,tPoint,1)))
                Next
                file.Close
              saveToFile = True
          Else
              saveToFile = False
          End If
        End Function
    
        Public Function getFileName(name)
          If dict.Exists(name) Then
            Dim temp, tempPos
              temp = dict(name).Item("FileName")
              tempPos = 1 + InStrRev(temp, "\")
              getFileName = Mid(temp, tempPos)
          Else
            getFileName = ""
          End If
        End Function
    
        Public Function getFilePath(name)
          If dict.Exists(name) Then
            Dim temp, tempPos
              temp = dict(name).Item("FileName")
              tempPos = InStrRev(temp, "\")
              getFilePath = Mid(temp, 1, tempPos)
          Else
            getFilePath = ""
          End If
        End Function
    
        Public Function getFilePathComplete(name)
          If dict.Exists(name) Then
            getFilePathComplete = dict(name).Item("FileName")
          Else
            getFilePathComplete = ""
          End If
        End Function
    
        Public Function getFileSize(name)
          If dict.Exists(name) Then
            getFileSize = LenB(dict(name).Item("Value"))
          Else
            getFileSize = 0
          End If
        End Function
    
        Public Function getFileSizeTranslated(name)
          If dict.Exists(name) Then
            temp = LenB(dict(name).Item("Value"))
              If temp <= 1024 Then
                getFileSizeTranslated = temp & " bytes"  
              Else
                temp = FormatNumber((temp / 1024), 2)
                getFileSizeTranslated = temp & " kilobytes"
              End If
          Else
            getFileSizeTranslated = ""
          End If
        End Function
    
        Public Function getContentType(name)
          If dict.Exists(name) Then
            getContentType = dict(name).Item("ContentType")
          Else
            getContentType = ""
          End If
        End Function
    
      Private Sub getData(rawData)
        Dim separator 
          separator = MidB(rawData, 1, InstrB(1, rawData, ChrB(13)) - 1)
    
        Dim lenSeparator
          lenSeparator = LenB(separator)
    
        Dim currentPos
          currentPos = 1
        Dim inStrByte
          inStrByte = 1
        Dim value, mValue
        Dim tempValue
          tempValue = ""
    
        While inStrByte > 0
          inStrByte = InStrB(currentPos, rawData, separator)
          mValue = inStrByte - currentPos
    
          If mValue > 1 Then
            value = MidB(rawData, currentPos, mValue)
    
            Dim begPos, endPos, midValue, nValue
            Dim intDict
              Set intDict = Server.CreateObject("Scripting.Dictionary")
    
              begPos = 1 + InStrB(1, value, ChrB(34))
              endPos = InStrB(begPos + 1, value, ChrB(34))
              nValue = endPos
    
            Dim nameN
              nameN = MidB(value, begPos, endPos - begPos)
    
            Dim nameValue, isValid
              isValid = True
              
              If InStrB(1, value, stringToByte("Content-Type")) > 1 Then
    
                begPos = 1 + InStrB(endPos + 1, value, ChrB(34))
                endPos = InStrB(begPos + 1, value, ChrB(34))
    
                If endPos = 0 Then
                  endPos = begPos + 1
                  isValid = False
                End If
    
                midValue = MidB(value, begPos, endPos - begPos)
                  intDict.Add "FileName", trim(byteToString(midValue))
    
              begPos = 14 + InStrB(endPos + 1, value, stringToByte("Content-Type:"))
              endPos = InStrB(begPos, value, ChrB(13))
    
                midValue = MidB(value, begPos, endPos - begPos)
                  intDict.Add "ContentType", trim(byteToString(midValue))
    
                begPos = endPos + 4
                endPos = LenB(value)
    
                nameValue = MidB(value, begPos, ((endPos - begPos) - 1))
              Else
                nameValue = trim(byteToString(MidB(value, nValue + 5)))
              End If
    
              If isValid = True Then
    
                intDict.Add "Value", nameValue
                intDict.Add "Name", nameN
    
                dict.Add byteToString(nameN), intDict
              End If
          End If
    
          currentPos = lenSeparator + inStrByte
        Wend
      End Sub
      
      End Class
    
      Private Function stringToByte(toConv)
        Dim tempChar
         For i = 1 to Len(toConv)
           tempChar = Mid(toConv, i, 1)
          stringToByte = stringToByte & chrB(AscB(tempChar))
         Next
      End Function
    
      Private Function byteToString(toConv)
        For i = 1 to LenB(toConv)
          byteToString = byteToString & Chr(AscB(MidB(toConv,i,1))) 
        Next
      End Function
    %>
    Then i have Insert.asp

    Code:
    <!--#include file="Loader.asp"-->
    <%
      Response.Buffer = True
    
      ' load object
      Dim load
        Set load = new Loader
        
        ' calling initialize method
        load.initialize
        
      ' File binary data
      Dim fileData
        fileData = load.getFileData("file")
      ' File name
      Dim fileName
        fileName = LCase(load.getFileName("file"))
      ' File path
      Dim filePath
        filePath = load.getFilePath("file")
      ' File path complete
      Dim filePathComplete
        filePathComplete = load.getFilePathComplete("file")
      ' File size
      Dim fileSize
        fileSize = load.getFileSize("file")
      ' File size translated
      Dim fileSizeTranslated
        fileSizeTranslated = load.getFileSizeTranslated("file")
      ' Content Type
      Dim contentType
        contentType = load.getContentType("file")
      ' No. of Form elements
      Dim countElements
        countElements = load.Count
      ' Value of text input field "fname"
      Dim fnameInput
        fnameInput = load.getValue("fname")
      ' Value of text input field "lname"
      Dim lnameInput
        lnameInput = load.getValue("lname")
      ' Value of text input field "profession"
      Dim profession
        profession = load.getValue("profession")  
        
      ' destroying load object
      Set load = Nothing
    %>
    
    <html>
    <head>
      <title>Inserts Images into Database</title>
      <style>
        body, input, td { font-family:verdana,arial; font-size:10pt; }
      </style>
    </head>
    <body>
      <p align="center">
        <b>Inserting Binary Data into Database</b><br>
        <a href="show.asp">To see inserted data click here</a>
      </p>
      
      <table width="700" border="1" align="center">
      <tr>
        <td>File Name</td><td><%= fileName %></td>
      </tr><tr>
        <td>File Path</td><td><%= filePath %></td>
      </tr><tr>
        <td>File Path Complete</td><td><%= filePathComplete %></td>
      </tr><tr>
        <td>File Size</td><td><%= fileSize %></td>
      </tr><tr>
        <td>File Size Translated</td><td><%= fileSizeTranslated %></td>
      </tr><tr>
        <td>Content Type</td><td><%= contentType %></td>
      </tr><tr>
        <td>No. of Form Elements</td><td><%= countElements %></td>
      </tr><tr>
        <td>First Name</td><td><%= fnameInput %></td>
      </tr><tr>
        <td>Last Name</td><td><%= lnameInput %></td>
      </tr>
      <tr>
        <td>Profession</td><td><%= profession %></td>
      </tr>
      </table><br><br>
      
      <p style="padding-left:220;">
      <%= fileName %> data received ...<br>
      <%
        ' Checking to make sure if file was uploaded
        If fileSize > 0 Then
        
          ' Connection string
          Dim connStr
            connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
            connStr = connStr & Server.MapPath("FileDB.mdb")
        
          ' Recordset object
          Dim rs
            Set rs = Server.CreateObject("ADODB.Recordset")
            
            rs.Open "Files", connStr, 2, 2
            
            ' Adding data
            rs.AddNew
              rs("File Name") = fileName
              rs("File Size") = fileSize
              rs("File Data").AppendChunk fileData
              rs("Content Type") = contentType
              rs("First Name") = fnameInput
              rs("Last Name") = lnameInput
              rs("Profession") = profession
            rs.Update
            
            rs.Close
            Set rs = Nothing
            
          Response.Write "<font color=""green"">File was successfully uploaded..."
          Response.Write "</font>"
        Else
          Response.Write "<font color=""brown"">No file was selected for uploading"
          Response.Write "...</font>"
        End If
          
          
        If Err.number <> 0 Then
          Response.Write "<br><font color=""red"">Something went wrong..."
          Response.Write "</font>"
        End If
      %>
      </p>
      
      <br>
      <table border="0" align="center">
      <tr>
      <form method="POST" enctype="multipart/form-data" action="Insert.asp">
      <td>First Name :</td><td>
        <input type="text" name="fname" size="40" ></td>
      </tr>
      <td>Last Name :</td><td>
        <input type="text" name="lname" size="40" ></td>
      </tr>
      <td>Profession :</td><td>
        <input type="text" name="profession" size="40" ></td>
      </tr>
      <td>File :</td><td>
        <input type="file" name="file" size="40"></td>
      </tr>
      <td> </td><td>
        <input type="submit" value="Submit"></td>
      </tr>
      </form>
      </tr>
      </table>
    
    </body>
    </html>
    And finally i have Insert.htm

    Code:
    <html>
    <head>
    	<title>Inserts Images into Database</title>
    	<style>
    		body, input { font-family:verdana,arial; font-size:10pt; }
    	</style>
    </head>
    <body>
    	<p align="center">
    		<b>Inserting Binary Data into Database</b><br>
    		<a href="show.asp">To see inserted data click here</a>
    	</p>
    	
    	<table border="0" align="center">
    	<tr>
    	<form method="POST" enctype="multipart/form-data" action="Insert.asp">
    	<td>First Name :</td><td>
    		<input type="text" name="fname" size="40"></td>
    	</tr>
    	<td>Last Name :</td><td>
    		<input type="text" name="lname" size="40"></td>
    	</tr>
    	<td>Profession :</td><td>
    		<input type="text" name="profession" size="40">
    	</td></tr>
    	<td>File :</td><td>
    		<input type="file" name="file" size="40"></td></tr>
    	<td> </td><td>
    		<input type="submit" value="Submit"></td></tr>
    	</form>
    	</tr>
    	</table>
    
    </body>
    </html>
    They are all placed in localhost/MyWeb along with a FileDB.mdb file

    When i try and upload a picture i get this

    Inserting Binary Data into Database
    To see inserted data click here

    File Name
    File Path
    File Path Complete
    File Size 0
    File Size Translated
    Content Type
    No. of Form Elements 0
    First Name
    Last Name
    Profession



    data received ...
    No file was selected for uploading...


    First Name :
    Last Name :
    Profession :
    File :

    It goes to the next page but doesn't upload the file that i select. Any ideas?
    Thanks in advance

    The tutorial i am following is here

    http://www.stardeveloper.com/article...1033101&page=1
    Last edited by James.90; 11-11-2007 at 10:55 PM.

  • #2
    Senior Coder Spudhead's Avatar
    Join Date
    Jun 2002
    Location
    London, UK
    Posts
    1,856
    Thanks
    8
    Thanked 110 Times in 109 Posts
    Well... I'd say that your loader class isn't doing its job properly. Why it isn't, I have no idea, but putting binary data into an Access database is a really bad idea. My suggestion would be to use a pure ASP upload script (Jacob Gilley's free script works fine) to upload your files to your server's filesystem, and then simply store the file path in the database.


  •  

    Posting Permissions

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