Markus: Dateiupload auf Server und in Access DB

Hi Leute!

Möchte es Usern ermöglichen Ein Formular auszufüllen indem auch Bilder hogeladen werden sollen... und der Bildpfad sollte dann in einer Access DB gespeichert werden...

Bis jetzt gehe ich so vor (Der Normale Upload auf den Server klappt schon mit:)

' Das ist das Formular selbst

<form METHOD="POST" ACTION="/~upload/upload.asp" ENCTYPE="multipart/form-data">
  <input TYPE="FILE" NAME="FILE1" SIZE="50"><br>
  <input TYPE="SUBMIT" VALUE="Upload">
</form>

' Das die eigentlich upload.asp Datei
' Dateigrößenlimit von 10000 Bytes
' Erlaubte Dateiformate gif, jpg

<%

Dim mySmartUpload
 Dim intCount
 Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

mySmartUpload.MaxFileSize = 10000
 mySmartUpload.AllowedFilesList = "gif,jpg"

mySmartUpload.Upload

intCount = mySmartUpload.Save(Server.Mappath("/~upload/"))
 Response.Write(intCount & " Datei(en) hochgeladen")
%>

Nun möchte ich aber dass der Uploadpfad in einer DB gespeichert wird um später wieder abgerufen werden...

Aber wie ermittle ich den Pfad?

Zugriff auf die DB bekomme ich so:

' Es werden die vorhin ausgefüllten Formularfelder angesprochen und in die Datenbank eingefügt
<%

Dim conn, rs
Dim strConnection

strConnection = Application("Immo_ConnectionString")
Set conn = CreateObject("ADODB.Connection")

conn.Open strConnection

Set rs = CreateObject("ADODB.Recordset")
rs.CursorLocation = 2   ' adUseServer
rs.CursorType     = 1   ' adOpenKeyset
rs.LockType       = 3   ' adLockOptimistic

strSQL = "SELECT * FROM Immo WHERE ID = 0"

rs.Open strSQL, conn

rs.AddNew
rs("Ort") = Request.Form("Ort")
rs("Preis") = Request.Form("Preis")
rs("Kennwort") = Request.Form("Kennwort")
rs("Mail") = Request.Form("EMail")

' Hier sollte nun auch der Pfad der Upload Datei übertragen werden in das den Recordset:

rs ("Bildpfad") = ?????

rs.Update

rs.Close
conn.Close

Set rs   = Nothing
Set conn = Nothing
%>

Wie könnte ich das realisieren?

MFG
Markus

  1. Hallo,

    intCount = mySmartUpload.Save(Server.Mappath("/~upload/"))

    Hast du den hier nicht angegeben?

    Deine Uploadobject muss ja wissen wohin zu laden ist. Die Readme des Uploadobjectes sollte dir schon sagen welche eigenschaften belegt werden müssen.
    Wo landen dennn die Dateien?

    Odium

    1. Hi

      Danke dass du dich damit beschäftigst

      Vl hab ich mich falsch ausgedrückt: Den Pfad weiß ich natürlich schon ist: /~upload/

      Aber ich möchte den eigentlichen Dateinamen ermitteln der hochgeladen wurde.

      zb: jemand durchsucht seine Festplatte und wählt aus:

      C:/Eigene Dateien/bild7.jpg

      das wird dann auf den Servergeladen und so gespeichert:

      /~upload/bild7.jpg

      und genau diesen pfad möchte ich ermitteln zumindest das bild7.jpg

      um den link in die Datenbank zu schreiben.

      intCount = mySmartUpload.Save(Server.Mappath("/~upload/"))
      Hast du den hier nicht angegeben?

      Deine Uploadobject muss ja wissen wohin zu laden ist. Die Readme des Uploadobjectes sollte dir schon sagen welche eigenschaften belegt werden müssen.

      Wo landen dennn die Dateien?

      MFG
      Markus

      1. Hallo,

        ich sagte ja schon, das du die Readme deines UploadObjektes ankucken sollst. Für IIS gibt es ja einige solcher einzubindenden Module die bestimmte Informationen bereitstellen.
        Die kenne ich natürlich nicht.
        Sicherlich hat das UplodObject Kennnis davon.

        Odium

        1. Hi

          Aber wie komme ich an die Readme ran?

          MFG
          Markus

          1. Hab inzwischen folgendes gefunden:

            Response.Write("Path=" & MyUpLoad.Files.Item("FILE1").FilePathName

            gibt mir den kompletten Pfad zurück...

            möchte aber nur den Namen:

            Hab folgende Dinge zur Auswahl:

            ASPSMARTUPLOAD : DOCUMENTATION File Object Last modified: August 1st, 1999 © 2000 Advantys. All rights reserved. TOP

            Name

            The Name property contains the value of the attribute NAME of the  <INPUT TYPE='file'> Tag.

            Syntax .Name

            Return Value Returns a String value.

            Example <% Response.Write("Name=" & MyUpLoad.Files.Item(2).Name) %>


            FileName

            The FileName property contains the name of the file.

            Syntax .FileName

            Return Value Returns a String value.

            Example <% Response.Write("FileName=" & MyUpLoad.Files.Item(2).FileName) %>


            FileExt

            The FileExt property contains the extension of the file.

            Syntax .FileExt

            Return Value Returns a String value.

            Example <% Response.Write("Extension=" & MyUpLoad.Files.Item(2).FileExt) %>


            FilePathName

            The FilePathName property contains the full path of the file.

            Syntax .FilePathName

            Return Value Returns a String value.

            Example <% Response.Write("Path=" & MyUpLoad.Files.Item(2).FilePathName) %>


            ContentType

            The ContentType property contains the Content-Type of field Data.

            Syntax .ContentType

            Return Value Returns a String value.

            Example <% Response.Write("Content-Type=" & MyUpLoad.Files.Item(2).ContentType) %>


            ContentDisp

            The ContentDisp property contains the content-disposition of field Data.

            Syntax .ContentDisp

            Return Value Returns a String value.

            Example <% Response.Write("Content-disposition=" & MyUpLoad.Files.Item(2).ContentDisp) %>


            Size

            The Size property contains the file's size.

            Syntax .Size

            Return Value Returns a Long value.

            Example <% Response.Write("Size=" & MyUpLoad.Files.Item(2).Size) %>


            ContentString

            The ContentString property contains contents of the file.

            Syntax .ContentString

            Return Value Returns a String value.

            Example <% Response.Write("Contents=" & MyUpLoad.Files.Item(2).ContentString) %>


            TypeMIME

            The TypeMIME property contains the Type of the file (application, audio, image,multipart, text, video, ... ).

            Syntax .TypeMIME

            Return Value Returns a String value.

            Example <% Response.Write("MIME Type=" & MyUpLoad.Files.Item(2).TypeMIME) %>


            SubTypeMIME

            The SubTypeMIME property contains the sub-Type of the file.

            Syntax .SubTypeMIME

            Return Value Returns a String value.

            Example <% Response.Write("MIME Sub-Type=" & MyUpLoad.Files.Item(2).SubTypeMIME) %>


            IsMissing

            The IsMissing property returns a boolean which indicates if user has not specified a file.

            Syntax .IsMissing

            Return Value Returns a Boolean value.

            Example <% If MyUpLoad.Files.Item(2).IsMissing Then     Response.Write("There is no specified file.") End If %>


            BinaryData

            The BinaryData property contains the byte corresponding to the table index containing the transmitted data.

            Syntax .BinaryData (lngIndex)

            Return Value Returns a byte value.

            Parameter lngIndex is an index of the byte's array.

            Example <% for i=0 to MyUpload.Files.Item(2).size - 1     Response.Write( Chr( MyUpLoad.Files.Item(2).BinaryData(MyIndex) ) ) next i %>


            SaveAs

            The SaveAs method saves file in the specified directory. This method always overwrites existing files.

            Syntax .SaveAs (FilePathName)

            Parameter FilePathName is the destination directory with the file's name. It could be a physical or a virtual path. If there is only the file's name then this one will be saved on the root directory of the web server.

            Examples <% myUpload.files.item(2).saveas "c:\temp" & myUpload.files.item(2).filename myUpload.files.item(3).saveas "/docs/" & myUpload.files.item(3).filename myUpload.files.item(4).saveas "myFile.txt" %>


            FileToField

            The FileToField method saves file in a record af a specified DataBase.

            Syntax .FileToField FieldName

            Parameter FieldName is the field of the RecordSet.

            Example <% myUpload.files.item(2).FileToField myRecordSet.Field("FILE") %>


            © 2000 Advantys. All rights reserved.

            ASPSMARTUPLOAD : DOCUMENTATION Files Object Last modified: August 1st, 1999 © 2000 Advantys. All rights reserved. TOP

            Count

            The Count property returns the number of elements in the collection.

            Syntax .Count

            Return Value Returns an Long value which is the number of elements in the collection.

            Examples <% Response.Write("NbFiles=" & MyUpLoad.Files.Count) %>


            TotalBytes

            The TotalBytes property returns the number of bytes in the collection.

            Syntax .TotalBytes

            Return Value Returns an Long value which is the number of elements in the collection.

            Examples <% response.Write("File's size uploaded : " & MyUpLoad.Files.TotalBytes ) %>


            Item

            The Item method access to a item in a collection. This is the default method of the collection object.

            Syntax .Item(key)

            Return Value Returns a file object of the collection corresponding to the key.

            Examples <% For intI=1 to MyUpLoad.Files.count Response.Write("ItemID=" & MyUpLoad.Files.Item(intI).Name) Next

            For intI=1 to MyUpLoad.Files.count Response.Write("ItemID=" & MyUpLoad.Files(intI).Name) Next

            Response.Write("ItemID=" & MyUpLoad.Files("myFILE").Name) %>


            © 2000 Advantys. All rights reserved.

            ASPSMARTUPLOAD : DOCUMENTATION Form Object Last modified: August 1st, 1999 © 2000 Advantys. All rights reserved. TOP

            Count

            The Count property returns the number of elements in the collection.

            Syntax .Count

            Return Value Returns an Long value which is the number of elements in the collection.

            Example <% Response.Write("NbForm=" & MyUpLoad.Form.Count) %>


            Item

            The Item method access to a item in a collection. This is the default method of the collection.

            Syntax .Item(key)

            Return Value Returns a Item object of the collection corresponding to the key.

            Parameter key could be either a long value or either a string.

            Examples <% For intI=1 to MyUpLoad.Form.count     Response.Write("Item=" & MyUpLoad.Form.Item(intI).Name) Next

            For intI=1 to MyUpLoad.Form.count     Response.Write("Item=" & MyUpLoad.Form(intI).Name) Next

            Response.Write("Item=" & MyUpLoad.Form("myTEXT").Name) %>


            © 2000 Advantys. All rights reserved.

            ASPSMARTUPLOAD : DOCUMENTATION Item Object Last modified: August 1st, 1999 © 2000 Advantys. All rights reserved. TOP

            Count

            The Count property return the number of values for this Item.

            Syntax .Count

            Return Values Returns a Long value.

            Examples <% For each Item In MyUpload.Form     Response.Write ("Number =" & MyUpLoad.Form(Item).Count & "<br>") Next %>


            Name

            The Name property specifies the name for this Item.

            Syntax .Name

            Return Values Returns a String value.

            Examples <% For intI=1 to MyUpload.Form.Count     Response.Write ("Name=" & MyUpLoad.Form.Item(intI).Name & "<br>") Next %>


            Values

            The Values property specifies the values for this Item. If there are several tag with the same name, or a tag accept multiple values, then the property without parameter returns a list of values.

            Syntax .Values ([lngIndex])

            Return Values Returns a String value.

            Parameter lngIndex is an optional parameter. Then the property returns the value corresponding to the index.

            Examples <% For intI=1 To MyUpload.Form.Count     Response.Write ("Name=" & MyUpLoad.Form.Item(intI).Values(1) & "<br>")     Response.Write ("Name=" & MyUpLoad.Form.Item(intI).Values & "<br>") Next

            For each Item In MyUpload.Form     Response.Write (Item & " = " & MyUpLoad.Form(Item) & "<br>") Next

            For each Item In MyUpload.Form("mySELECT")     Response.Write (Item & "<br>") Next %>

            MFG Markus

            1. Habs inzwischen gelöst mit:

              Response.Write("Name=" & mySmartUpload.Files.Item("FILE1").FileName)

              Wie könnte ich prüfen ob schon eine gleichnamige Datei sich in dem /~upload  Verzeichnis befindet?

              Da ja sonst die Datei ohne Rückfragen überschrieben würde?

              Wie macht man das praktisch? Wenn viele User bilder hochladen?

              Nehme an es wird viele geben die die Datei bild1.jpg  haben od so ähnlich?

              Od kann ich irgendwie beliebige Namen zuordnen unter denen gespeichert wird?

              Wie zb einfaches Durchnummerieren: bild1.jpg, bild2.jpg , bild3.jpg, od so?

              Wie macht man sowas in der Praxis?

              MFG
              Markus

              1. hi,

                Od kann ich irgendwie beliebige Namen zuordnen unter denen gespeichert wird?

                Wie zb einfaches Durchnummerieren: bild1.jpg, bild2.jpg , bild3.jpg, od so?

                Du kannst natürlich beliebige namen zuordnen es bietet sich da an userid und bildname irgendwie zu kombinieren.

                Überprüfen ob datei vorhand ist geht mit dem file.scripting object aber da weiss ich nicht wie so aus dem hut. Müsst ich auch nachlesen.

                Gruss
                Netghost

                1. Hallo,

                  schu mal in die Objekte rein:

                  http://www.gruenthal.de/tutorial/vbscript/vbstoc.htm

                  Odium

                  1. Hi

                    Merci

                    Kannst du dir bitte auch den vorigen Beitrag von mir anschauen

                    MFG
                    Markus

                2. Hi Netghost

                  Wie könnt ich da zb. die User ID zuordnen? Wäre eine gute u sinvolle Lösung?

                  Wie realisiere ich das denn?

                  hab jetzt die uploadseite so:

                  <%

                  Dim mySmartUpload
                   Dim intCount
                   Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

                  mySmartUpload.MaxFileSize = 10000

                  mySmartUpload.AllowedFilesList = "gif,jpg"

                  mySmartUpload.Upload
                   Response.Write("Name=" & mySmartUpload.Files.Item("FILE1").FileName)
                   Response.Write("Ext=" & mySmartUpload.Files.Item("FILE1").FileExt)
                   Response.Write("ContType=" & mySmartUpload.Files.Item("FILE1").ContentType)
                   Response.Write("ContentDisp=" & mySmartUpload.Files.Item("FILE1").ContentDisp)
                   Response.Write("Size=" & mySmartUpload.Files.Item("FILE1").Size)
                   Response.Write("ContentSTring=" & mySmartUpload.Files.Item("FILE1").ContentString)
                   Response.Write("TypeMime=" & mySmartUpload.Files.Item("FILE1").TypeMIME)
                   Response.Write("SubTypeMime=" & mySmartUpload.Files.Item("FILE1").SubTypeMIME)

                  intCount = mySmartUpload.Save(Server.Mappath("/~upload/"))
                   Response.Write(intCount & " Datei(en) hochgeladen")

                  %>

                  Du kannst natürlich beliebige namen zuordnen es bietet sich da an userid und bildname irgendwie zu kombinieren.

                  »»

                  Über das file.scripting Object müßt ich mich mal schlau machen?

                  Überprüfen ob datei vorhand ist geht mit dem file.scripting object aber da weiss ich nicht wie so aus dem hut. Müsst ich auch nachlesen.

                  Wie kann man sich denn eigentlich in der Praxis vor Viren schützen die evtl. in einem Upload vorhanden sind.

                  Denn wenn ich zb: nur *.gif u *.jpg Datein zulasse kann ja darin auch leicht ein Virus enthalten sein...

                  Wie schützt man sich davor?

                  MFG
                  Markus

        2. Hi,

          Also ich weiss nicht wie das upload object bei dir aussieht, aber es muss einen filename irgendwo haben. Bei mir sieht das so aus:

          picName = File.FileName
          oRs.fields(strPic) = picName
          oRs.Update
          File.SaveToDisk strFolder ' Save the file

          Wie gesagt hängt aber alles vom uploadobject ab.

          Grüsse
          Netghost