Dateiupload auf Server und in Access DB
Markus
- asp.net
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
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
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
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
Hi
Aber wie komme ich an die Readme ran?
MFG
Markus
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:
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.
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.
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.
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
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
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
Hi
Merci
Kannst du dir bitte auch den vorigen Beitrag von mir anschauen
MFG
Markus
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
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