' Connect to the DB ' ***************** Set oConn = Server.CreateObject("ADODB.Connection") curDir = Server.MapPath("filer.mdb") oConn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
' Open a recordset ' **************** strSQL = "SELECT * 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.SaveAs Server.Mappath("" & file.FileName) oRs("FILENAME") = "" & file.FileName oRs.Update intCount = intCount + 1 End If Next
' Display the number of files uploaded ' ************************************ Response.Write("Filen er upload'et.<BR>")
' Destruction ' *********** oRs.Close oConn.Close Set oRs = Nothing Set oConn = Nothing %> </BODY> </HTML>
Jeg skal have formularfelterne til at blive gemt i databasen, så værdien i overskrift-feltet ryger ind i kolonnen overskrift i databasen osv...
Derudover skal jeg på en eller anden må have upload.asp til at omdøbe filen, så den enten får samme id som posten i databasen.
Set oRs = oConn.Execute("SELECT Max(id) FROM filer") nummer = oRs(0)
For each file In mySmartUpload.Files If not file.IsMissing Then file.SaveAs Server.Mappath("" & nummer & "." & file.FileExt) oConn.Execute("Update filer Set brugerid = "&MySmartUpload.form("brugerid")&", overskrift = '"&MySmartUpload.form("overskrift")&"', beskrivelse = '"&MySmartUpload.form("beskrivelse")&"', filnavn = '"&nummer&"."&file.FileExt&"'") nummer = nummer + 1 End If Next
oRs.Close oConn.Close Set oRs = Nothing Set oConn = Nothing %> ----- Måden hvorpå du giver dem et nummer kommer så an på om andre bruger databasen I mit eksempel her kræver det at andre ikke opdaterer den samtidig for at det bliver unik
hov denne linje --- file.SaveAs Server.Mappath("" & nummer & "." & file.FileExt) --- Det er den som gemmer filen, men man kan jo ikke benytte mappath på et nummer som ikke eksisterer ;o) Så det skal rettes til --- file.SaveAs Server.Mappath("din_sti") & "/" & nummer & "." & file.FileExt) --- altså så du får stien med :o)
hmm det er muligt der er flere slåfejl Men det vigtige når du benytter en multi form er at du ikke benytter request.form når du skal hente data fra formen, men derimod benytter dit upload objekt
nej nummer er jo ikke et felt, nummer er det navn du ville give filen Synes du skrev det skulle svare til id´et i databasen Derfor har jeg hevet nummer ud som det største id i databasen filnavnet blivet så lavet som "nummer.fileExt" altså nummeret, et punktum, og endelsen :o) Jeg kan se jeg har kludret i den og lavet en update, det skal jo være en insert, tsk tsk
Anyways regnede med du havde et felt i databasen som hed "filnavn"
Set oRs = oConn.Execute("SELECT Max(id) FROM filer") nummer = oRs(0)+1
For each file In mySmartUpload.Files If not file.IsMissing Then file.SaveAs Server.Mappath("din_sti") &"/" & nummer & "." & file.FileExt oConn.Execute("Insert Into filer Set (brugerid, overskrift, beskrivelse, filnavn) values ("&MySmartUpload.form("brugerid")&",'"&MySmartUpload.form("overskrift")&"','"&MySmartUpload.form("beskrivelse")&"','"&nummer&"."&file.FileExt&"'") nummer = nummer + 1 End If Next
oRs.Close oConn.Close Set oRs = Nothing Set oConn = Nothing %>
Set oRs = oConn.Execute("SELECT Max(id) FROM filer") nummer = oRs(0)
For each file In mySmartUpload.Files If not file.IsMissing Then file.SaveAs Server.Mappath("") & "" & nummer & "." & file.FileExt) oConn.Execute("Insert filer Set brugerid = "&MySmartUpload.form("brugerid")&", overskrift = '"&MySmartUpload.form("overskrift")&"', beskrivelse = '"&MySmartUpload.form("beskrivelse")&"', filename = '"&nummer&"."&file.FileExt&"'") nummer = nummer + 1 End If Next
oRs.Close oConn.Close Set oRs = Nothing Set oConn = Nothing %> </BODY> </HTML>
Set oRs = oConn.Execute("SELECT Max(id) FROM filer") nummer = oRs(0)
For each file In mySmartUpload.Files If not file.IsMissing Then file.SaveAs Server.Mappath("/aspsmartupload") & "/" & nummer & "." & file.FileExt oConn.Execute("Insert filer brugerid = "&MySmartUpload.form("brugerid")&", overskrift = '"&MySmartUpload.form("overskrift")&"', beskrivelse = '"&MySmartUpload.form("beskrivelse")&"', filename = '"&nummer&"."&file.FileExt&"'") nummer = nummer + 1 End If Next
oRs.Close oConn.Close Set oRs = Nothing Set oConn = Nothing %> </BODY> </HTML>
Har rettet server.mappath, men får denne fejlmeddelelse:
Det virker slet ikke som om den vil noget som helst lige nu... Jeg har kunne uploade tidligere, men det er som om skriverettighederne til mapperne er forsvundet, også er det vel næsten umuligt at fortsætte... Må jeg skrive igen i morgen, så tjekker jeg lige op på rettighederne imens???
ja skriv du bare :o), har været ude så ser det først nu Din 500 fejl får du sikkert i IE Gå op i funktioner >> internetinstilinger >> avanceret >> og fjern fluebenet i noget ala "vis http fejl som uskadelige" Så får du en mere rigtig fejlmeddelelse som kan benyttes til debug
det kan jo så skyldes to ting, enten så har du ikke skrive rettigheder til mappen Eller også har jeg husket forkert og du skal måske ikke have den første slash prøv med file.SaveAs Server.Mappath("/aspSmartUpload/upload") & nummer & "." & file.FileExt
Du kan også prøve at tilføje følgende linjer som bør fange fejl og så kan udskrive din sti så du kan se om den er som du regner med --- If Err Then Response.Write "fejl: "&Err.description&"<br>" Response.write "sti og filnavn: "&Server.Mappath("/aspSmartUpload/upload") & "/" & nummer & "." & file.FileExt End If
prøv lave den om til --- sql = "Insert filer brugerid = " & mySmartUpload.form("brugerid") & ", overskrift = '" & mySmartUpload.form("overskrift") & "', beskrivelse = '" & mySmartUpload.form("beskrivelse") & "', filename = '" & nummer & "." & file.FileExt & "'" oConn.Execute(sql) --- og så lave sådan et error tjek som i min sidste kommentar hvor du laver en response.write sql , så kan vi se hvad der står i den :o)
Nu er den der næsten... Der bliver sendt og uploadet, men filerne får forkerte navne... Den første, som blev lagt op har id 11, men fik intet filnavn... Anden upload fik navn 11, men har id 12...
Set oRs = oConn.Execute("SELECT Max(id) FROM filer") nummer = oRs(0)
For each file In mySmartUpload.Files If not file.IsMissing Then file.SaveAs Server.Mappath("\aspSmartUpload") & "\" & nummer & "." & file.FileExt sql = "Insert Into filer (brugerid, overskrift, beskrivelse, filename) Values ("&mySmartUpload.form("brugerid")& ",'" & mySmartUpload.form("overskrift") & "','" & mySmartUpload.form("beskrivelse") & "','" & nummer & "." & file.FileExt & "')" oConn.Execute(sql) nummer = nummer + 1 End If Next
oRs.Close oConn.Close Set oRs = Nothing Set oConn = Nothing %> </BODY> </HTML>
For each file In mySmartUpload.Files If not file.IsMissing Then file.SaveAs Server.Mappath("\aspSmartUpload") & "\" & nummer & "." & file.FileExt sql = "Insert Into filer (brugerid, overskrift, beskrivelse) Values ("&mySmartUpload.form("brugerid")& ",'" & mySmartUpload.form("overskrift") & "')" oConn.Execute(sql) set rs = oConn.Execute("Select @@IDENTITY AS NewID") nytId = rs("NewID") oConn.Execute("Update filer Set filename = '" & mySmartUpload.form("beskrivelse") & "','" & nytId & "." & file.FileExt & "' Where id = "&nytId) End If Next
oRs.Close oConn.Close Set oRs = Nothing Set oConn = Nothing %>
Har været nødt til at lave lidt om... Den kunne ikke lide, at du åbnede tre felter, men kun brugte to Insert Into filer (brugerid, overskrift, beskrivelse)... Men den siger, at der mangler noget efter Next???
Microsoft VBScript runtime error '800a01a8'
Object required: ''
/aspSmartUpload/upload.asp, line 26
Koden: <% Dim mySmartUpload,file,oConn,oRs,nummer
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload") mySmartUpload.AllowedFilesList = "jpg,gif,txt,doc,xls,pdf" mySmartUpload.Upload
For each file In mySmartUpload.Files If not file.IsMissing Then file.SaveAs Server.Mappath("\aspSmartUpload") & "\" & nummer & "." & file.FileExt sql = "Insert Into filer (brugerid, overskrift, beskrivelse) Values ("&mySmartUpload.form("brugerid")& ",'" & mySmartUpload.form("overskrift") & "','" & mySmartUpload.form("beskrivelse") & "')" oConn.Execute(sql) set rs = oConn.Execute("Select @@IDENTITY AS NewID") nytId = rs("NewID") oConn.Execute("Update filer Set filename = '" & nytId & "." & file.FileExt & "' Where id = "&nytId) End If Next
oRs.Close oConn.Close Set oRs = Nothing Set oConn = Nothing %>
argh, jeg fik lavet en mega copy paste fejl kan jeg godt se Men jeg tror du har rettet det ok Kan det passe linje 26 er omkring oRs.Close? jeg er kommet til at skrive --- set rs = oConn.Execute("Select @@IDENTITY AS NewID") nytId = rs("NewID") --- istedet for --- set oRs = oConn.Execute("Select @@IDENTITY AS NewID") nytId = oRs("NewID")
Ok... Nu giver den rigtigt id som filnavn - i databasen... Filerne bliver gemt uden navn, så de f.eks. bare hedder ".gif" - Hver gang man uploader en ny fil, erstatter den den tidligere fil med samme navn... De skulle helst have samme navn som id'et i databasen..?
ahh ja ok Damn, tror jeg sover her til formiddag, undskylder :o) Der skal rykkes rundt --- For each file In mySmartUpload.Files If not file.IsMissing Then sql = "Insert Into filer (brugerid, overskrift, beskrivelse) Values ("&mySmartUpload.form("brugerid")& ",'" & mySmartUpload.form("overskrift") & "','" & mySmartUpload.form("beskrivelse") & "')" oConn.Execute(sql) set rs = oConn.Execute("Select @@IDENTITY AS NewID") nytId = rs("NewID") oConn.Execute("Update filer Set filename = '" & nytId & "." & file.FileExt & "' Where id = "&nytId) file.SaveAs Server.Mappath("\aspSmartUpload") & "\" & nytId & "." & file.FileExt End If Next
det gør du i hvert fald, undskyld de sidste svipsere Godt det virker :o)
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.