Avatar billede thelionking Nybegynder
25. april 2007 - 14:33 Der er 4 kommentarer

Billedupload problemmer v. brug af class.upload.php fra verot.net

Hej, jeg har siddet i mange timer og prøvet at regne denne fejl ud, men uden held.
Jeg laver en hjemmeside hvor det er muligt at uploade billeder til et billedgalleri, ved hjælp af den geniale class: "class.upload.php" fra siden http://www.verot.net/.

Jeg har imidlertid nogle problemer med at uploade store billeder...
Jeg har prøvet både lokalt og på web-server at uploade, og scriptet virker godt, så længe at filen ikke er for stor/bred/høj (?)

Alle små billeder virker fint, den uploader, indsætter i db og det hele!

Jeg har prøvet ALT muligt: rettet alt hvad jeg har kunne læse mig til på nettet om begrænsninger af filstørrelser, der kan rettes i php.ini filen.
Har slettet og omskrevet scriptet fuldstændigt to gange, på helt forskellige måder osv.

Men intet hjælper. Der udskrives ingen fejl, men man kan se at efterfølgende scripts under billed-upload scriptet, ikke bliver eksekveret når billed-upload scriptet fejler, da det nederste af min side ikke bliver vist...

Her har I koden:

### FORM

<form enctype="multipart/form-data" method="POST" action="">
    <table cellpadding="0" cellspacing="5">
        <tr>
            <td>
                Vælg et billede du vil uploade til billedgalleriet<br />
                <i><b>Bemærk: Billederne må max. fylde 2MB</b></i><br />
                <br />
            </td>
        </tr>
        <tr>
            <td>
                <input type="file" name="img_file" />
            </td>
        </tr>
        <tr>
            <td>
                <input type="submit" name="submit_upload_img" value="Upload" id="button" />
            </td>
        </tr>
    </table>
</form>

### SCRIPT

<?php
    # Slår fejl rapporteing af alle fejl til
    error_reporting(E_ALL);
   
    if(isset($_POST['submit_upload_img']))
    {
        # Opretter billedoplysninger
        $img = $_FILES['img_file'];
        $img_name = $img['tmp_name'];
        $img_size = getimagesize($img_name);
        $img_x = $img_size[0];
        $img_y = $img_size[1];
       
        # Finder fil endelse (f.eks. ".jpg")
        $exst = explode('.', $img['name']);
        $allowed = array('jpg', 'JPG', 'jpeg', 'JPEG', 'png', 'PNG', 'gif', 'GIF');
       
        if($img['size'] < 2000000)
        {
            # Billedet er under 2MB
            if(in_array($exst[1], $allowed))
            {
                # Billedet er den rigtige filtype
                $foo = new Upload($img);
               
                if($foo->uploaded)
                {
                    # Opretter thumb
                    $foo->image_convert      = 'jpg';
                    $foo->image_resize        = true;
                    $foo->image_x            = 120;
                    $foo->image_y            = 90;
                   
                    # Uploader thumbnail
                    $foo->process('./img/gallery/thumb/');
                   
                    $thumb_name = $foo->file_dst_name;
                   
                    if($foo->uploaded)
                    {
                        # Thumbnail er uploadet, upload normalbillede
                        $foo->image_convert          = 'jpg';
                       
                        if($img_x >= 700 && $img_y <= 500)
                        {
                            # Billedet er for bredt
                            $foo->image_resize            = true;
                            $foo->image_x                = 500;
                            $foo->image_ratio_y          = true;
                        }
                        elseif($img_x <= 700 && $img_y >= 500)
                        {
                            # billedet er for højt
                            $foo->image_resize            = true;
                            $foo->image_y                = 500;
                            $foo->image_ratio_x          = true;
                        }
                        elseif($img_x >=700 && $img_y >= 500)
                        {
                            # billedet er både for bredt og højt, sæt til 700x500px
                            $foo->image_resize            = true;
                            $foo->image_x                = 700;
                            $foo->image_y                = 500;
                        }
                       
                        # Tilføj tekst
                        $foo->image_text              = 'Firmanavn';
                        $foo->image_text_direction    = 'h';
                        $foo->image_text_background  = '#000000';
                        $foo->image_text_font        = 1;
                        $foo->image_text_position    = 'BL';
                        $foo->image_text_padding_x    = 5;
                        $foo->image_text_padding_y    = 2;
                       
                        # Upload
                        $foo->process('./img/gallery/normal/');
                       
                        $orig_name = $foo->file_dst_name;
                       
                        if($foo->uploaded)
                        {
                            # Alt gik godt
                            $query = "INSERT INTO cb_gallery (thumb, normal) VALUES ('" . $thumb_name . "', '" . $orig_name . "')";
                            $result = mysql_query($query);
                           
                            # Sletter midl. filer
                            $foo->Clean();
                           
                            $msg = 'Billedet er korrekt tilføjet til galleri siden';
                        }
                        else
                        {
                            # Der opstod en fejl ved upload af normal billede
                            $msg = 'Der skete en fejl under upload af normal billedet';
                        }
                    }
                    else
                    {
                        # Thumbnail billede upload fejlede
                        $msg = 'Fejl under upload af thumbnail';
                    }
                }
                else
                {
                    # Billede blev ikke uploadet
                    $msg = 'Fejl under upload';
                }
            }
            else
            {
                # Forkert filtype
                $msg = 'Forkert filtype';
            }
        }
        else
        {
            # For stort billede
            $msg = 'Billedet er for stort';
        }
       
        echo '<p class="msg">' . $msg . '</p>';
    }
?>

...Det skal lige siges at alle funktionerne i mit script - f.eks. resize funktionerne - virker så længe billedet ikke overskrider en (ukendt) højde, bredde eller filstørrelse

Håber meget at der er én der kan hjælpe!

Mvh
Kasper Pedersen
Avatar billede intenz Novice
25. april 2007 - 17:27 #1
Der er i apache en indstilling der gør at du kun kan uploade filer af en vis størrelse. Den hedder: upload_max_filesize

Hvis du laver en php fil med indholdet:
<?
phpinfo();
?>
kan du se hvor store filerne må være.

Hvis du overskrider denne størrelse bliver filen ikke uploadet.
Avatar billede thelionking Nybegynder
26. april 2007 - 10:55 #2
Det har jeg prøvet. Jeg har prøvet at sætte den til 4, 8, 40, 50, 100 og 5000 alt imens jeg har testet. (Har husket at genstarte min phpserver efter vær gang!)

Jeg har også prøvet at skrue op for "post_max_size", "max_execution_time", "max_input_time" og "memory_limit" (...ved ikke om de har noget med det at gøre!).

Der er ingen forskel at se!
Avatar billede zeattle Nybegynder
28. april 2007 - 04:20 #3
Du har jo sat en max bredde og højde som billedet må være? :)
Avatar billede thelionking Nybegynder
30. april 2007 - 13:59 #4
Hvis det er
...
elseif($img_x >=700 && $img_y >= 500)
{
    # billedet er både for bredt og højt, sæt til 700x500px
    $foo->image_resize            = true;
    $foo->image_x                = 700;
    $foo->image_y                = 500;
}
... du mener "zeattle" så skulle den meget gerne bare sætte bredde til 700px og højde til 500px, hvis billedet er større end 700x500px.

Jeg har fundet problemet (eller i hvert fald et af dem)...

Jeg skulle ændre "memory_limit" fra 8 til intetmindre end 50... Jeg syntes ikke det giver meget mening, men det ser ud til at det virker nu..!

Men tak for hjælpen.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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