Avatar billede zuledk Nybegynder
27. februar 2006 - 13:45 Der er 10 kommentarer og
1 løsning

Fejl i upload script

Hej Alle

Jeg har fået lavet mig et script hvor man kan uploade et billed og samtidig resizer den billedet til 110 px i bredden. Jeg har bare et problem med at når man uploader et billed der er mere en ca 12-1300 px bred eller mere så kommer den med følgende fejl meddelse:

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 8000 bytes)

Er der nogen der ved om der er en maks på hvor stort et billed man må uploade??

mvh
Tommy
Avatar billede coderdk Praktikant
27. februar 2006 - 13:52 #1
Det er forskelligt - For at behandle billedet, skal den nemlig decompresse billedet i memory. Hvor stort det må være afhænger helt af hvor højt php's memory limit er sat...
Avatar billede zuledk Nybegynder
27. februar 2006 - 13:54 #2
Okay. Men hva vis jeg nu gerne vil have scriptet til at kunne uploade store billeder?
Den memmory limit er det noget man selv sætter eller er det serveren jeg kører på?
Avatar billede coderdk Praktikant
27. februar 2006 - 13:56 #3
Det er noget der skal sættes på serveren http://dk.php.net/ini.core man skal nok overveje også at ændre post_max_size og upload_max_size - memory_limit skal være højere end de to.
Avatar billede zuledk Nybegynder
27. februar 2006 - 14:02 #4
Ok men jeg kører ikke selv serveren. Jeg har web10 som udbyder, Kan du evt. kigge på koden og prøve at lave det sådan at den upload max size er på?? jeg har nemlig ingen ide om hvordan det skal laves så.


<?
    //Her skal filen flyttes fra
    $src = $_FILES['fil']['tmp_name'];
   
    //Hvilken type fil arbejder vi med?
    $ext = strtolower(end(explode(".", $_FILES['fil']['name'])));
   
    $tid = time();
    $nytNavn = "uploadet-" . $tid . "." . $ext;
    $dst = "stor/" . $nytNavn;
    copy($src, $dst);
    $image = $dst;
    if(file_exists($image)) {
        $foto = 1;
        $imgsize = getimagesize($image);
       
        if($imgsize[0] > 110) {
       
            $width = 110;
            $height = $imgsize[1] / ($imgsize[0] / 110);
            $dst_img=imagecreatetruecolor($width,$height);
            $src_img=ImageCreateFromJpeg("$image");
            ImageCopyResampled($dst_img,$src_img,0,0,0,0,$width,$height,ImageSX($src_img),ImageSY($src_img));
            ImageJpeg($dst_img, "lille/" . $nytNavn);
        } else {
            $src_img=ImageCreateFromJpeg("$image");
            ImageJpeg($src_img, $dst);
        }
        $imgurl = "lille/" . $nytNavn;
    } else {
        $foto = 0;
        echo "fejl";
    }
   

?>
Avatar billede coderdk Praktikant
27. februar 2006 - 14:09 #5
Upload max size er noget der skal sættes i php.ini ;) Du kan dog selv smide denne i din upload-form:

<input type="hidden" name="MAX_FILE_SIZE" value="50000">

Den laver max til 50.000 bytes... Du kan ydermere checke i dit script (det du pastede):

if ( filesize( $_FILES['fil']['tmp_name'] ) > 50000 )
{
  die( 'For stor fil! Max 50000 bytes!' );
}
Avatar billede zuledk Nybegynder
27. februar 2006 - 14:18 #6
Den kommer stadig med samme fejl og jeg har gjort som beskrevet, jeg har dog undladt if sætningen.

<form enctype="multipart/form-data" action="upload.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="50000">
    <table cellspacing="2" cellpadding="2" border="0">
        <tr>
            <td>Vælg fil:</td>
            <td><input name="fil" type="file"></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" value="Send File"> </td>
        </tr>
    </table>
</form>
Avatar billede coderdk Praktikant
27. februar 2006 - 14:23 #7
Ok, underligt, men den bedste løsning er nok if-sætningen, da det felt du satte ind, jo kan ignoreres af browseren (lyder som om din gjorde, hvor stor var filen du uploadede?)...
Avatar billede zuledk Nybegynder
27. februar 2006 - 14:25 #8
jeg forsøgte med et billed der er 2000x2000 - 324 KB (332.314 bytes). Hmm det lyder underligt
Avatar billede zuledk Nybegynder
27. februar 2006 - 14:27 #9
Jeg har også forsøgt med et billed der fylder 120.000 bytes og der virker uddemærket. Jeg har sat if sætningen ind for at se om den sagde noget. Den siger fint at billedet er over de 50000 bytes.
Avatar billede coderdk Praktikant
27. februar 2006 - 14:41 #10
Ok :) Du kan bare svare selv og tage dine point, jeg skal ikke have noget :)
Avatar billede zuledk Nybegynder
27. februar 2006 - 14:43 #11
Fair nok. Men ellers takker for hjælpen, Jeg håber der er flere der svare på tråden...
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