Avatar billede clausberg Nybegynder
02. november 2006 - 21:56 Der er 14 kommentarer og
1 løsning

Har jeg sat en øvre grænse?

Hey
Jeg har et script der uploader billeder til et bibliotek (upload) og filnavnet på billedet + dertil hørende tekst til en mysql database. Scriptet er klassisk opbygget med formularfelter osv. Når man trykker på submit knappen, springer den til filen test.php.
$output .= '<form action="test.php" method="post" enctype="multipart/form-data">';


test.php:::::::::::::
<?php
function resize( $filename, $newfilename, $maxw, $maxh )
{
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return file_exists($newfilename);
}
require('connect.php');

$allowedFiles = array('jpg');
$curDir      = getcwd();
$uploadDir    = '/upload/';
$output      = '<div id="centerDiv">';

if(isset($_POST['upload']) && $_FILES['myFile']['size'] > 0)
{
    $ext = strtolower(end(explode('.',$_FILES['myFile']['name'])));
    if(in_array($ext,$allowedFiles))
    {
        $design  = mysql_real_escape_string(strip_tags($_POST['mydesign']));
        $email  = mysql_real_escape_string(strip_tags($_POST['myemail']));
        $kategori  = mysql_real_escape_string(strip_tags($_POST['mykategori']));
        $header  = mysql_real_escape_string(strip_tags($_POST['myHeader']));
        $pris  = mysql_real_escape_string(strip_tags($_POST['mypris']));
        $comment = mysql_real_escape_string(strip_tags($_POST['myText']));
        $file = md5(uniqid(rand(), true)) . '.jpg';

        if(resize($_FILES['myFile']['tmp_name'], $curDir . $uploadDir . $file, 150, 150))
        {
            mysql_query("INSERT INTO tbl_716418(filename,design,email,kategori,header,pris,comment,added) VALUES('".$file."','".$session->username."','".$email."','".$kategori."','".$header."','".$pris."','".$comment."',NOW())") or die(mysql_error());
            $output .= 'Filen er uploadet<hr />';
        }
    }
}
?>

Hvis jeg prøver at uploade et meget stort billede, så får jeg fejlen:
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 9216 bytes) in /customers/xxx.dk/xxx.dk/httpd.www/test.php on line 73

Linie 73 er::::
    $srcim = imagecreatefromjpeg( $filename );

Jeg mener ikke jeg har sat nogen øvre grænse på hvor stort billedet må være... jeg har jo sat scriptet til at skalere billedet ned?!?!?! Hva er der galt?????? (scriptet virker fint med mindre billeder)
Avatar billede leif Seniormester
02. november 2006 - 22:12 #1
Nej, men det har din Webhost.
Avatar billede clausberg Nybegynder
03. november 2006 - 08:35 #2
!!! æv.....  det skriver one.com jo intet om. Er det normalt at webhost sætter en øvre grænse - jeg går ud fra, at jeg intet kan gøre ved det?

Er den øvre grænse på 9216 bytes eller 16777216 bytes (ud fra ovenstående fejlmeddelse).

Kan du hjælpe med en ændring i scriptet der gør følgende (sig endeligt til hvis der er mere optimale løsninger):::
Hvis billedet er større end den tilladte størrelse, kommer der en meddelse frem, som siger noget i retningen af:
"Dit billede er for stort til at vi kan bruge det. Reducer venligst billedet i størrelse".... og ikke fejlmeddelsen:::
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 9216 bytes) in /customers/xxx.dk/xxx.dk/httpd.www/test.php on line 73
Avatar billede leif Seniormester
03. november 2006 - 09:18 #3
Ja, det er normalt, og 16777216 bytes det skulle gerne svare til 16mb
Avatar billede clausberg Nybegynder
03. november 2006 - 17:03 #4
Ok... så forstår jeg bare ikke... det billede jeg prøver at uploade fylder blot 1,87 MB (1.972.151 byte)og det giver fejl.

I fejlmeddelsen står der jo bl.a. (tried to allocate 10784 bytes)... og det er jo ikke den øvre grænse... eller hva?
Avatar billede clausberg Nybegynder
04. november 2006 - 12:01 #5
Det er tilsyneladende kun billeder der fylder i størrelsesorden af 7,55 KB (7.733 byte) der virker????
Avatar billede clausberg Nybegynder
04. november 2006 - 13:36 #6
Kan det være fordi "tiden løber ud"???? eller har det noget at gøre med den måde jeg har sat mit script til at resize billedets størrelse?
Avatar billede leif Seniormester
04. november 2006 - 13:43 #7
Du har jeg ikke arbejdet så meget med Resize, men det er fordi dit script prøver at bruge mere Memory end den får lov til.
Avatar billede clausberg Nybegynder
04. november 2006 - 19:02 #8
;-) ok... vil det sige, at det er følgende der er problemer med:

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return file_exists($newfilename);
}

Skal jeg eventuelt sætte et andet resize script ind, eller kan du se, hvad der går galt her?
Avatar billede clausberg Nybegynder
05. november 2006 - 21:23 #9
Jeg har prøvet at ændre på resize scriptet men uden held. Kan jeg ændre på hvor meget memory det bruger?
Avatar billede clausberg Nybegynder
06. november 2006 - 15:05 #10
Jeg ved at nogle resize script viser billedet som lille, men ved klik på billedet, kan man få vist det i en større størrelse. Er det det, der hedder thumbnails?
Avatar billede clausberg Nybegynder
09. november 2006 - 21:45 #11
Jeg er løbet lidt tør for ideer til at løse problemet - har du forslag?
Avatar billede clausberg Nybegynder
13. november 2006 - 15:32 #12
Jeg har fundet frem til at jeg skal bruge noget der hedder GD2... men jeg er ikke helt klar over, hvordan jeg bruger det? Har du erfaring med det?
Avatar billede clausberg Nybegynder
16. november 2006 - 08:55 #13
smid et svar, hvis du vil have point
Avatar billede leif Seniormester
16. november 2006 - 09:00 #14
Nej tak.
Avatar billede clausberg Nybegynder
16. november 2006 - 10:40 #15
Ok.. men tak for hjælpen :-) Jeg tror jeg er kommet lidt nærmere en løsning.
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