07. april 2005 - 10:34Der er
30 kommentarer og 1 løsning
Upload filer til database
Jeg skal uploade nogle filer i en formular sammen med noget tekst. Jeg kan næsten regne ud at man skal uploade filen og så få filnavnet ned i access. Men hvordan fungere det i praksis. Hvordan forhindrer man filer i at blive overskrevet? Jeg havde tænkt på om man kunne bruge det ID nummer der automatiskt kommer?
har prøvet rode lidt med aspsmartupload men kan ikke rigtigt får det til at virke. Jeg skal bruge 1(eller flere) felter hvor man kan vælge filen. Når man trykker på en knap uploader den filerne til en mappe og gemmer stien i en database.
Så kan du da bruge sample 2 fra linket Der er en html side med en form på med mulighed for fire filer Derudover er der en aspside som gemmer filerne på serveren Det du mangler er så blot at lave en databaseforbindelse på asp siden og gemme stien --------------- asp fil fra link sample 2 i ny udgave: -------------- <% Dim mySmartUpload,file
/Her laver du en forbindelse til din database med alt dertil og ender med Conn.open
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload") mySmartUpload.Upload
For each file In mySmartUpload.Files If not file.IsMissing Then file.SaveAs("/DIN_MAPPE/DIN_UPLOAD/" & file.FileName) ' eller med fysisk sti ' file.SaveAs("c:\temp\" & file.FileName) /Her laver du en Conn.execute("Insert Into din_tabel (filnavn) Values ('/DIN_MAPPE/DIN_UPLOAD/" & file.FileName &"')") End If Next %>
Hvis du vil forhindre at filer bliver overskrevet så skal du enten tjekke med databasen før du uploader eller tjekke med serveren om filen eksisterer Men er det som regel ikke en fordel at en fil kan blive overskrevet? Hvis den kommer i en ny version fx
på html siden skal du huske at rette denne linje <FORM METHOD="POST" ACTION="/scripts/aspSmartUpload/Sample2.asp" ENCTYPE="multipart/form-data"> Din asp side ligger jo næppe i mappen /scripts/aspSmartUpload/ og hedder næppe Sample2.asp
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload") mySmartUpload.Upload
For each file In mySmartUpload.Files If not file.IsMissing Then
file.SaveAs("c:\wwwroot\inetpub\filer\" & file.FileName) Conn.execute("Insert Into filer (filnavn) Values (\filer" & file.FileName &"')") End If Next %>
Det kunne godt skyldes at du ikke har skrive rettigheder i den mappe Måske har du kun retighedder i en speciel upload mappe Prøv evt tjekke det med din udbyder for det er nok mit bedste bud
har imellemtiden løst det. Havde lagt aspsmartupload i forkert mappe:) Så kan godt oploade filnavnet i sample 4, men mangler stadig at den kopiere filen til en mappe.
Bliver ved med at få fejl i linie 52. Ved du hvad der er galt. har en tabel,filer, der består af idnummer + url <HTML> <BODY BGCOLOR="white">
<H1>aspSmartUpload : Sample 4</H1> <HR>
<% ' Variables ' ********* Dim mySmartUpload Dim file Dim oConn Dim strSQL Dim oRs Dim intCount intCount=0
' Object creation ' *************** Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
' Upload ' ****** mySmartUpload.Upload
' Connect to the DB ' ***************** Set oConn = Server.CreateObject("ADODB.Connection") curDir = Server.MapPath("\database\db1.mdb") oConn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
' Open a recordset ' **************** strSQL = "SELECT url,idnummer FROM filer"
Set oRs = Server.CreateObject("ADODB.recordset") Set oRs.ActiveConnection = oConn oRs.Source = strSQL oRs.LockType = 3 oRs.Open
' Select each file ' **************** For each file In mySmartUpload.Files ' Only if the file exist ' ********************** If not file.IsMissing Then
' Add the current file in a DB field ' ********************************** oRs.AddNew file.FileToField oRs.Fields("idnummer") oRs("filename") = file.FileName oRs.Update intCount = intCount + 1 End If Next
' Display the number of files uploaded ' ************************************ Response.Write(intCount & " file(s) uploaded.<BR>")
' Destruction ' *********** oRs.Close oConn.Close Set oRs = Nothing Set oConn = Nothing %> </BODY> </HTML>
er det ikke fordi den forsøger at gemme selve filen i databasen med den kommando? For det er jo først i linjen efter at den indsætter filnavnet i databasen
denne her gemmer jo filen i mappen file.SaveAs("c:\wwwroot\inetpub\filer\" & file.FileName) og denne her gemmer url i din tabel Conn.execute("Insert Into filer (url) Values (c:\wwwroot\inetpub\filer\" & file.FileName)
skiftede mappe c:\1\ nu denne Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "\filer16-02-05_25.JPG')". /Sample2.asp, line 16
jeg har desværre ikke spor forstand på servere og sådan noget. Men hvis den ikke kan gemme den må det næsten være derfor Der må være et og andet sted du kan angive fulde rettighedder
Conn.execute("Insert Into filer (filnavn) Values (\filer" & file.FileName &"')") skal vist være Conn.execute("Insert Into filer (filnavn) Values ('\filer" & file.FileName &"')")
mange tak for kampen. Du var en stor hjælp.........
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.