27. marts 2004 - 18:55Der er
18 kommentarer og 1 løsning
Upload af fil med AspSmartUpload
Nu har jeg brugt hele dagen på at sidde og undre mig over hvorfor jeg ikke kan få gølgende kode til at virke. Den er klippet fra et andet projekt jeg har lavet, og der virker den fint:
************************** Kode start ************************** <% 'Uploader og resizer et nyt billede If bolWasPosted AND request("savePicture") = true Then 'Max billede størrelse i bytes Const MaxFileSize = 512000 '500 KB
Set Upload = Server.CreateObject("AspSmartUpload.SmartUpload") Upload.MaxFileSize = MaxFileSize Upload.AllowedFilesList = "jpg,jpeg,png" Upload.Upload If Err <> 0 Then If Err = -2147220494 Then intErrorCode = 20 If Err = -2147220399 Then intErrorCode = 21 Err.Clear End If
If Not Upload.Files("file").IsMissing And intErrorCode = 0 Then strFilename = strGenerator() strFilename = strFilename &"_"& Upload.Files("file").FileName
Upload.Files("file").SaveAs Server.MapPath("/images/Pictures/" & strFilename) If Err = 0 Then 'Resizer picture Set Image = Server.CreateObject("AspImage.Image") Image.LoadImage Server.MapPath("/images/Pictures/" & strFilename)
If Image.MaxX > 200 Then If(Image.MaxX > Image.MaxY) Then intRatio = ((200 * 100) / Image.MaxX) intNewY = CInt(Image.MaxY * (intRatio / 100)) Image.ResizeR 200, intNewY Image.ImageFormat = 1 Else intRatio = ((200 * 100) / Image.MaxY) intNewX = CInt(Image.MaxX * (intRatio / 100)) Image.ResizeR intNewX, 200 Image.ImageFormat = 1 End if End if Image.FileName = Server.MapPath("/images/Pictures/" & strFilename) Image.SaveImage
Set Image = Nothing Set Upload = Nothing Else intErrorCode = 30 End If Else If intErrorCode = 0 Then intErrorCode = 40 End if End If
If intErrorCode = 0 Then 'Hvis alt går godt kode ind her End if End If Response.write "Fejl:" & intErrorCode %>
************************** Kode Slut ************************
selvom jeg prøver at udskrive intErrorCode, så er den altid 0, og hvis jeg vælger en fil i formen, så går der noget tid, svarende til den tid det tager at overføre filen til serveren, men den får aldig flyttet filen til den angivede mappe...
Et lidt andet spg. Er det ike muligt at tjekke for fil størrelsen inden filen uploades..?
Er der noget sted du sætte intErrorCode lig med 0 ?
du har et par if sætninger som tjekker på intErrorCode = 0 men hvis intErrorCode ikke er defineret endnu vil det gå galt. If Not Upload.Files("file").IsMissing And intErrorCode = 0 Then
den skulle den også komme forbi, for hvis jeg ikke indtaster noget, så skifter siden med det samme, men hvis der er valgt et billede, så tager det lidt tid (hvad der vil svare til upload tiden) - så jeg vil tro at den kommer forbi..
Men det undre mig også meget at hvis jeg udskriver error koden, så er den altid 0, og det burde den jo ikke være.
I toppen af min side har jeg følgende: bolWasPosted = Request.ServerVariables("HTTP_METHOD") = "POST"
Længere nede bruger jeg den så (har rettet den lidt i forhold til den jeg postede til at starte med): if bolWasPosted AND Request.form("mode") = "savePicture" Then
Min form erklære jeg som følgende: <form name=upload method="POST" enctype="multipart/form-data" action="gem.asp">
Også har jeg følgende hidden inputbox: <input type="hidden" name="mode" value="savePicture">
Request.ServerVariables("CONTENT_LENGTH") returnere med den fil jeg testede med: 1266904, det vil sige at den burde ikke begynde at uploade hvis MaxFileSize er 512000 - men det så ud til at den gjode det..
Jeg tror den uploader så snart man trykke på submit knappen. Jeg ved faktisk ikke om kan lave noget javascript som tjekker størrelsen på den valgte fil.
nå, nu ser det ud til at jeg har fået det til at virke, den tænker godt nok lidt over det med størrelsen, men det må jeg leve med...
Tusind tak for hjælpen i bege spørgsmål - jeg tror jeg ender med at bruge dit første eksempel koblet sammen med databasen, det virkede sku ret godt :-)
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.