14. februar 2008 - 23:32Der er
26 kommentarer og 1 løsning
upload script find fem fejl
hej eksperter
Er der nogen der kan lure hvad jeg gør forkert her ?
Jeg har et script som skal uploade en fil. Men inden det gøres skal filen tjekkes for størrelse (200kb) samt format (gif, tif og jpg).
Variablen Billedenavn sættes til "nope" hvis ikke der uploades noget billede sammen med posten.
Nedenstående er sikkert et frygteligt rod. Da jeg har forsøgt at skrive mit gamle fungerende script sammen med et som tjekkede for type og størrelse, for det gjorde mit gamle script ikke. Adressen efter upload.save er den rette adresse, der gemte den til før jeg begyndte at lege med at tjekke ting :-)
God jagt og på forhånd tak.
-Labanen ----------------- fejl = false Billedenavn = "nope" Set Upload = Server.CreateObject("Persits.Upload.1") If Not Upload.Files("FILE1") Is Nothing Then Set file = Upload.Files("FILE1") if lCase(file.ext) = "tif" Or lCase(file.ext) = "gif" or lCase(file.ext) = "jpg" and File.Size < 200000 Then Upload.Save("d:\home\feltkursus2008dk\www\mainframes\login\opslag_upload") Billedenavn = File.FileName Else fejl = True fejltekst = "billedet er for stort eller forkert format, kun .gif .tif og .jpg billeder virker" End if end If Tekst = Upload.form("text") U_Id = session("U_Id") Dag = day(now) Maaned = month(now) Aar = ((year(now))-2000) Tid = time Tekst = replace(Tekst, vbCrLf, "<br>") Tekst = replace(Tekst, "'", "´")
If Not fejl then set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath ("../../../db/feltkursus.mdb") Conn.Open DSN strSQL = "Insert into Opslag (U_Id, O_Tekst, O_Dag, O_Maaned, O_Aar, O_Tid, O_Billede) values('" & U_Id & "','" & Tekst & "','" & Dag & "','" & Maaned & "','" & Aar & "','" & Tid & "','" & Billedenavn & "')" Set rs = Conn.Execute(strSQL) Conn.Close set Conn = Nothing Response.write "<span class='tekst'>Opslag tilføjet<br><a href='opslag.asp'>Tilbage</a></span> " Else Response.write "<span class='tekst'>"& fejltekst &"<br><a href='opslag.asp'>Tilbage</a></span> " End if
jeg ved foresten ikke hvad det var for en hjerneblødning der fik mig til at putte tif på listen. Det er 100% lige gyldigt, men jeg fik ikke slettet det da mit script aldrig kom til at virke og jeg ledte efter andre fejl.
Altså se bort fra det. Der skal bare tjekkes for gif og jpg.
fejl = true Billedenavn = "nope" ' Set Upload = Server.CreateObject("Persits.Upload.1") ' If Not Upload.Files("FILE1") Is Nothing Then ' Set file = Upload.Files("FILE1") ' if ( lCase(file.ext) = "tif" Or lCase(file.ext) = "gif" or lCase(file.ext) = "jpg" ) and File.Size < 200000 Then ' Upload.Save("d:\home\feltkursus2008dk\www\mainframes\login\opslag_upload") ' Billedenavn = File.FileName ' Else ' fejl = True ' fejltekst = "billedet er for stort eller forkert format, kun .gif .tif og .jpg billeder virker" ' End if ' end If ' Set file = Upload.Files("FILE1") If Not Upload.Files("FILE1") Is Nothing Then response.write "Yep" Else response.write "Nope" End if end If ' Tekst = Upload.form("text") Tekst = "test" U_Id = session("U_Id") Dag = day(now) Maaned = month(now) Aar = ((year(now))-2000) Tid = time Tekst = replace(Tekst, vbCrLf, "<br>") Tekst = replace(Tekst, "'", "´")
If Not fejl then ' o p r e t n y h e d set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath ("../../../db/feltkursus.mdb") Conn.Open DSN strSQL = "Insert into Opslag (U_Id, O_Tekst, O_Dag, O_Maaned, O_Aar, O_Tid, O_Billede) values('" & U_Id & "','" & Tekst & "','" & Dag & "','" & Maaned & "','" & Aar & "','" & Tid & "','" & Billedenavn & "')" Set rs = Conn.Execute(strSQL) Conn.Close set Conn = Nothing Response.write "<span class='tekst'>Opslag tilføjet<br><a href='opslag.asp'>Tilbage</a></span> " Else Response.write "<span class='tekst'>"& fejltekst &"<br><a href='opslag.asp'>Tilbage</a></span> " End if %>
det her er scriptet som virker... men ikke tjekker, er det nemmere at lave det om ? :-)
Billedenavn = "nope" Set Upload = Server.CreateObject("Persits.Upload.1") Count = Upload.Save("d:\home\feltkursus2008dk\www\mainframes\login\opslag_upload") If Not Upload.Files("FILE1") Is Nothing Then Set file = Upload.Files("FILE1") Billedenavn = File.FileName end If Tekst = Upload.form("text") U_Id = session("U_Id") Dag = day(now) Maaned = month(now) Aar = ((year(now))-2000) Tid = time Tekst = replace(Tekst, vbCrLf, "<br>") Tekst = replace(Tekst, "'", "´")
' o p r e t n y h e d set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath ("../../../db/feltkursus.mdb") Conn.Open DSN strSQL = "Insert into Opslag (U_Id, O_Tekst, O_Dag, O_Maaned, O_Aar, O_Tid, O_Billede) values('" & U_Id & "','" & Tekst & "','" & Dag & "','" & Maaned & "','" & Aar & "','" & Tid & "','" & Billedenavn & "')" Set rs = Conn.Execute(strSQL) Conn.Close set Conn = Nothing Response.write "<span class='tekst'>Opslag tilføjet<br><a href='opslag.asp'>Tilbage</a></span> "
If Not Upload.Files("FILE1") Is Nothing Then if ( lCase(file.ext) = "tif" Or lCase(file.ext) = "gif" or lCase(file.ext) = "jpg" ) and File.Size < 200000 Then response.write "Yep" Else response.write "Nope" End if end If
If Not Upload.Files("FILE1") Is Nothing Then Set file = Upload.Files("FILE1") if ( lCase(file.ext) = ".gif" or lCase(file.ext) = ".jpg" ) and File.Size < 200000 Then Billedenavn = File.FileName Else response.write "Nope" End if end If
Det virker sådan her, men kun næsten. For nu uploader den stadig andre filer end det som den skal, men adressen bliver ikke gemt i databasen og de bliver derfor ikke vist på min side. stien bliver holdt i variablen "billedetekst"
If Not Upload.Files("FILE1") Is Nothing Then Set file = Upload.Files("FILE1") response.write "filtypen er: " & file.ext & "<br>" If File.Size > 200000 Then response.write "fejl i filstørrelsen" else if lCase(file.ext) = ".gif" or lCase(file.ext) = ".jpg" then Billedenavn = File.FileName Else response.write "fejl i filtypen" End If End if end If
If Upload.Files("FILE1") Is Nothing Then response.write "Upload.Files, FILE1, er NOTHING!<br>" else response.write "Upload.Files, FILE1, er <b>IKKE</b> NOTHING!<br>" Set file = Upload.Files("FILE1") response.write "filtypen er: " & file.ext & "<br>" If File.Size > 200000 Then response.write "fejl i filstørrelsen<br>" Else response.write "filstørrelsen er ok<br>" if lCase(file.ext) = ".gif" or lCase(file.ext) = ".jpg" then Billedenavn = File.FileName response.write "filtypen er enten .gif eller .jpg" Else response.write "fejl i filtypen" End If End if end If
Så du skal lige have sat "fejl = True" ind de rigtige steder:
If Upload.Files("FILE1") Is Nothing Then response.write "Upload.Files, FILE1, er NOTHING!<br>" fejl = True else response.write "Upload.Files, FILE1, er <b>IKKE</b> NOTHING!<br>" Set file = Upload.Files("FILE1") response.write "filtypen er: " & file.ext & "<br>" If File.Size > 200000 Then response.write "fejl i filstørrelsen<br>" fejl = True Else response.write "filstørrelsen er ok<br>" if lCase(file.ext) = ".gif" or lCase(file.ext) = ".jpg" then Billedenavn = File.FileName response.write "filtypen er enten .gif eller .jpg" Else response.write "fejl i filtypen" fejl = True End If End if end If
Set Upload = Server.CreateObject("Persits.Upload.1") Upload.SetMaxSize 200000, True
Citat: "The optional second parameter specifies whether a file larger than the maximum should be truncated (if set to False or omitted), or rejected with an error exception (if set to True)."
det virker faktisk med den linie der. ! ok det giver ikke verdens flotteste fejlbesked, men det kan jeg arbejde med. det vigtigste er at de ikke fylder mig med alle mulige giga filer.
Der er faktisk en fusker måde at komme udenom fejl meldingerne på.. :-)
Eksempel:
On Error Resume Next ...din kode her...
If Err.Number <> 0 then Response.Write "Der opstod en fejl:<br>" & Err.Number & " - " & Err.Description End If
Du kan også skrive din egen fejlbeskrivelse (i stedet for Err.Number & " - " & Err.Description)..
Prøv det lige, og se om det er noget du synes om.. Det skal lige siges, at denne form for fejlhåndtering ikke kan anbefales, men at det er muligt at gøre det på den måde..
Takker for points :-)
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.