Avatar billede moejensen Nybegynder
27. marts 2004 - 18:55 Der 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
               
                Image.LoadImage Server.MapPath("/images/Pictures/" & strFilename)
                intRatio = ((40 * 100) / Image.MaxX)
                intNewY = CInt(Image.MaxY * (intRatio / 100))
                Image.ResizeR 40, intNewY
                Image.ImageFormat = 1
                Image.FileName = Server.MapPath("/images/Pictures/thumbnails/" & strFilename)
                Image.SaveImage
               
                Conn.Execute("INSERT INTO Pictures (Name,FileName,WebShow,FolderId,Alignment,Alt) VALUES ('"& Upload.Form("Name") &"', '"& strFilename &"', "& Upload.Form("show") &", "& Upload.Form("Category") &", '"& Upload.Form("iAlign") &"','"& Upload.Form("Alt") &"');")
               
                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..?
Avatar billede eagleeye Praktikant
27. marts 2004 - 21:40 #1
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
Avatar billede moejensen Nybegynder
27. marts 2004 - 21:48 #2
Jeg havde ikke erklæret den nogle steder, men det har jeg gjort nu, men det hjalp desværre ikke :-(
Avatar billede eagleeye Praktikant
27. marts 2004 - 21:55 #3
ok, hvad med bolWasPosted ?

    If bolWasPosted AND request("savePicture") = true Then
Avatar billede moejensen Nybegynder
27. marts 2004 - 22:00 #4
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.
Avatar billede eagleeye Praktikant
27. marts 2004 - 22:03 #5
ok, ja så det tyder på den upload noget.
Du kunne prøve at tilføje nogle linje som udksriver rundt om i koden:
Response.Write "Check 1"
Avatar billede moejensen Nybegynder
27. marts 2004 - 22:25 #6
nu prøvede jeg at fjerne tjekne, og nu virker det sørme, så jeg skal lige have fundet du af hvorfor den ikke kommer igennem den første If sætning.
Avatar billede eagleeye Praktikant
27. marts 2004 - 22:30 #7
Denne:

If bolWasPosted AND request("savePicture") = true Then

Det kan være fordi der skal " omkring true da request("savePicture") nok ikke tolkes som en bools værdi.

If bolWasPosted AND request("savePicture") = "true" Then
Avatar billede moejensen Nybegynder
27. marts 2004 - 22:33 #8
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">

Men det virker stadig ikke :-(
Avatar billede eagleeye Praktikant
27. marts 2004 - 22:44 #9
ok, men hvad med:  request("savePicture") = true
Avatar billede moejensen Nybegynder
27. marts 2004 - 22:49 #10
jeg har lige fået testet den gamle kombination som du skrev før med:

If bolWasPosted AND request("savePicture") = "true" Then

og

<form name=upload method="POST" enctype="multipart/form-data" action="KeKaCMS_imageInsert.asp?savePicture=true">

og jubii det virker :-)
Avatar billede moejensen Nybegynder
27. marts 2004 - 22:50 #11
så kan man så undre sig over hvorfor det andet ikke virkede
Avatar billede eagleeye Praktikant
27. marts 2004 - 22:59 #12
Ok :)
Ja det ved jeg ikke helt. Det muligvis noget med Request.form og denne enctype="multipart/form-data"
Avatar billede moejensen Nybegynder
27. marts 2004 - 22:59 #13
Jeg har læst på aspSmart.com at man skulle kunne bruge
if Request.ServerVariables("CONTENT_LENGTH") < MaxFileSize Then

til at afvise en fil der er for stor inden den bliver uploadet, men jeg kan ikke få den til at virke, har du nogele erfaringer med den?
Avatar billede moejensen Nybegynder
27. marts 2004 - 22:59 #14
det kunne du godt have ret i
Avatar billede eagleeye Praktikant
27. marts 2004 - 23:07 #15
Jeg må sige jeg ikke har prøvet det den før.

Hvis du udskriver Request.ServerVariables("CONTENT_LENGTH")  hvilknen værdi har den så?

Måske du kan prøve at sætte Int() eller Clng() omkring hvis det er store værdier og den tror Request.ServerVariables("CONTENT_LENGTH") er en streng:

MaxFileSize = 512000
if CLng(Request.ServerVariables("CONTENT_LENGTH")) < Clng(MaxFileSize) Then
Avatar billede moejensen Nybegynder
27. marts 2004 - 23:14 #16
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..
Avatar billede eagleeye Praktikant
27. marts 2004 - 23:16 #17
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.
Avatar billede moejensen Nybegynder
27. marts 2004 - 23:32 #18
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 :-)
Avatar billede moejensen Nybegynder
28. marts 2004 - 13:57 #19
jeg troede at det virkede, men pludselig fejlede det igen :-(

Jeg har nu fået delt filen op i de forskellige funktioner, så jeg ikke skal smide rundt med så mange variabler.

Den brokker sig også over en End if den skriver den mangler, men jeg kan ikke se hvor den skulle mangle.

Så hvis du har tid, må du gerne kigge forbi: http://eksperten.dk/spm/482901
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester