07. marts 2006 - 10:59Der er
27 kommentarer og 1 løsning
aspSmartUpload/stivej til access
Jeg har brugt aspSmartUpload til, at uploade billedfiler. Den uploader også billedfilerne til mappen på serveren og henter tekstfelterne ind i access databasen, men den skriver ikke billedfilnavnet i databasen. Hvordan får jeg den til det?
Her er et kode eksempel på hvordan man uploader billeder og samtidig gemmer fil-navnet i en access database. Håber du kan bruge det til noget.
<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("\scripts\aspSmartUpload\Sample.mdb") oConn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
' Open a recordset ' **************** strSQL = "SELECT FILENAME,FILE FROM TFILES"
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("FILE") 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>
Den kode du giver mig her er kopieret fra aspSmartUpload, ikke? Problemet er, at deres eksempel ikke også henter tekstfelter og, at de er flere billedfiler og så er det, at man liiiige skal være tilstrækkelig god til, at man selv kan omforme koden. Og det kan jeg ikke!
Jeg tror ikke helt jeg forstår hvad du mener med at hente tekstfelter. Kan du evt. give et eksempel på din kode og forklare lidt bedre hvad du mener med tekstfelterne, så skal jeg prøve at se om jeg kan hjælpe =)
Her er koden. Den skriver teksten i databasen, som den skal og uploader billedet til mappen, men den skriver ikke navnet på billedfilen i databasen. <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("database.mdb") Conn.Open DSN Dim mySmartUpload Dim intCount
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
Jeg kan godt se fejlen. Jeg har rettet den og testet det igennem. Den skriver nu til databasen, men hvor den skulle skrive billedfilnavnet, skriver den navnet på selve FileField feltet. Håber du forstår hvad jeg mener. :-)
Nu virker det bare!!! Fedt!!! :-) Tusind tak. Et lille spørgsmål.... Er det rigtigt, at man ikke kan få en upload til, at virke, på en side hvor formularen sender oplysningerne tilbage den samme side? (Håber du forstår hvad jeg mener)
De fleste eksempler viser at man skal bruge 2 filer, men det er ikke nødvendigt du kan godt havde koden og formen i samme fil hvis det er det nu mener?
Jeg ville tjekke på om method er lig med post sådan her:
<% If Request.Servervariables("REQUEST_METHOD") = "POST" Then 'koden som gemmer filen+form data
End If %> <html> .. html koden her med form'en <form action="<%=Request.Servervariables("Script_Name")%>" method="post" ENCTYPE="multipart/form-data"> .. form felterne </form>
eagleeye > det du gør med Request.ServerVariables, er det ligesom at tjecke for postback i ASP.NET ? :) I stedet for min metode, hvor jeg bare tjecker på om der er noget i form'en.
Ja, det er det jeg mener, om jeg kan have formen m. upload image og koden på samme side. Jeg er med på denne kodelinje: <form action="<%=Request.Servervariables("Script_Name")%>" method="post" ENCTYPE="multipart/form-data">
Men hvor forventer du denne skal stå?: <% If Request.Servervariables("REQUEST_METHOD") = "POST" Then 'koden som gemmer filen+form data
<% 'start på filen %> <% 'ASP koden som behandler data fra formen If Request.Servervariables("REQUEST_METHOD") = "POST" Then 'koden som gemmer filen+form data
End If 'Slut på ASP koden efter dette vise form'en %> <!-- HTML kode --> <form .....>
</body> </html>
og du har ASP efter <html><body> tags eller helt i toppen afhænger lidt af om du også øsnker at uskrive tekst når filen upload. Hvis man øsker at udskrive tekst kan at filen er uploadet kan det være man ønsker at benytte en bestetm style som er hentes via stylesheet eller man kun øsnker at vise form'en hvis der ikke er uploaded en fil:
<% 'start på filen %> <html> <head></head> <body> <% 'ASP koden som behandler data fra formen If Request.Servervariables("REQUEST_METHOD") = "POST" Then 'koden som gemmer filen+form data
Response.Write "tak fordi du uploaded en fil." Else %> <form .....>
</form> <% 'End if så forn ikke vises når filen er uploadet. End If %> </body> </html>
Hej igen eagleeye :-) Vil du kigge på de koder jeg har? Jeg kan simpelthen ikke få det til, at virke selv. Jeg vil gerne give 200 point for det, eller mere hvis jeg kunne.
Ja hvis du vil give 200 point er det nok bedst at oprette et nyt ;) men eller kan du jo altid give lidt ekstra point i et "point til eagleyee" bare det tilsamme ikke giver mere end 200 point.
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.