20. november 2007 - 21:00Der er
9 kommentarer og 1 løsning
ASPupload - problemer med fejlhåndtering
Hej Har problemer med fejlhåndtering i forbindelse med upload af billeder. Jeg oploader til memory først, for at kunne ændre navnet på filen ... tror måske det er det, som giver problemet. Når jeg prøver at oploade en for stor fil, får jeg ikke en fejlmeddelelse ... men filen oploades ikke (hvilket den jo heller ikke skal). Ville dog gerne have en fejlmeddelelse ... what to do?
Set Upload = Server.CreateObject("Persits.Upload") ' we use memory uploads, so we must limit file size Upload.SetMaxSize 50000, True Upload.OverwriteFiles = False On Error Resume Next
' Save to memory. Path parameter is omitted Upload.Save
' Access subdirectory specified by user subdir = Upload.Form("subdir")
' her laver vi en variabel, så filnavne bliver unikke.. i dette tilfælde en masse tal NewName = right("0" & year(now), 2) & right("0" & month(now), 2) & right("0" & day(now), 2) NewName = NewName & hour(time) & minute(time) & second(time) & ".jpg"
'så gemmer vi For Each File in Upload.Files File.SaveAs Path & "\" & NewName 'Response.Write "File saved as " & File.Path & "<BR>" KomprimerBillede(File.Path) Next
' Så må vi hellere lige undersøge om filen måske ' var for stor. Hvis filen var for står, får vi fejl nummer 8 If Err.Number = 8 Then ' Den var for stor Response.Write "Filen er for stor. Prøv igen." Else ' Den var ikke for stor ' Opstod der en anden fejl ? If Err <> 0 Then ' Ja - fortæl brugeren det Response.Write "Der opstod en fejl : " & Err.Description Else ' Nej - det gik godt Response.Write intFileCount & " fil(er) uploadet.<br>" & vbCrLf End If End If
' Slå fejl-check til igen On Error Goto 0
' Så er vi færdige, så vi rydder pænt op efter os Set objUpload = Nothing
Nu sidder jeg ikke ved min egen pc lige nu. Men det, du siger til mig, er, at jeg bare skal ændre "Upload.SetMaxSize 50000, True" til "Upload.SetMaxSize 50000, False" ... og så burde fejlen blive fanget og vist i fejlhåndteringen ...?
Skal da lige nævne, at jeg har prøvet bare at skrive "Upload.SetMaxSize 50000" (altså uden True efter) ... det virkede ikke. Vil det så gøre en forskel med "Upload.SetMaxSize 50000, False" mon?
ok ... så min fejlhåndtering, som det står nu, vil under ingen omstændigheder virke ...?
Løsningen er så selv at kontrollere filstørrelsen efter upload og så generere en fejlbesked, hvis filen har den præcise størrelse ... og så naturligvis slette den klippede fil bagefter.
Måske lidt søgt ... men hvad så hvis brugeren rent faktisk oploader en fil som er præcis 50000 byte? Det kan han jo så ikke ...
Filen ligger i hukommelsen, og er ikke gemt på disk endnu, så der er ikke noget at slette. Du skal bare søre for ikke at gemme den med "File.SaveAs Path".
Og ja der er desværre lukket for filer på præsis 50000 byte. Hvis du vil være super pernippen med det. Kan du jo fortælle dine brugere at filstørrelsen max må være 50000 byte også sætte limit til 50001. På den måde klipper den alle større filer hertil, og prøver de at uploade en fil på 50001 bliver den ikke klippet, men er pr difination stadig for stor :o)
du lukker ved at acceptere et svar - så det har du lige gjort :)
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.