Avatar billede 123maka Nybegynder
14. august 2004 - 00:50 Der er 14 kommentarer og
1 løsning

Fejl i billede system

Jeg har dette pic-upload system, det fungerer godt nok med nogle filer, og andre nægter den simpelthen at smide op.
Uploader jeg denne fil: www.kawsper.dyndns.dk/93682.jpg virker det helt fint og den skriver: image/jpeg
Ok!

Uploader jeg derimod denne fil: www.kawsper.dyndns.dk/girl.jpg skriver den: Forkert filtype, billeder må kun være .jpeg billeder uden at udskrive $aFile['type']. Hvad går der galt?


if(isset($_POST[Submit])) {
    $aFile = $_FILES['img'];
    echo $aFile['type'].'<br>';
    if($aFile[type] == 'image/jpeg' OR $aFile[type] == 'image/pjpeg') {

        $konfiguration["upload_bibliotek"] = "./prof_pics";
        $fra = $_FILES["img"]["tmp_name"];
        $time = time();
        $til = $konfiguration["upload_bibliotek"] . "/" . "$_SESSION[s_name]" . $time;

        copy($fra, $til);

        function thumb($sourcefile, $targetfile) {
                $size = 100;  // Max størrelse (pixler)
                $source_id = imagecreatefromjpeg($sourcefile);
                $source_x = imagesx($source_id);
                $source_y = imagesy($source_id);
                $delta = $size/max($source_x, $source_y);
                $dest_x = round($source_x*$delta);
                $dest_y = round($source_y*$delta);
                $target_id=imagecreatetruecolor($dest_x, $dest_y);
                imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
                imagejpeg($target_id,$targetfile,100);
        }

       
        $pic = $fra;                // Originalt billede
        $thumb = $konfiguration["upload_bibliotek"] . "/" . "$_SESSION[s_name]" . $time . "_m";
        thumb($pic, $thumb);                    // Kald funktion
       
        $billede = "$_SESSION[s_name]"."$time"."_m";
        $update_billede = mysql_query("UPDATE users SET pic='$billede' WHERE id='$_SESSION[s_id]'") or die(mysql_error());
       
        echo"Ok!";
} else {
    echo"Forkert filtype, billeder må kun være .jpeg billeder";
}

}
Avatar billede drbean Nybegynder
14. august 2004 - 00:57 #1
Prøv at echo din $aFile[type] ud. Så burde du få headeren på filen. Der findes nemlig nogen flere version af jpg formatet
Avatar billede dennismp Nybegynder
14. august 2004 - 00:57 #2
Kan du ikke tilføje (evt midlertidigt) efter :
echo"Forkert filtype, billeder må kun være .jpeg billeder";

denne linje:

echo "<br>Din fil var af typen {$aFile['type']}";

Så kan du hurtig se hvilken mime-type den bliver uploadet som.
Avatar billede dennismp Nybegynder
14. august 2004 - 00:59 #3
For langsom, det er jeg :)

En anden ting, jeg ville nok bruge:  getimagesize() på filnavnet, da den
kigger i selve filen - for at se hvilket format den har. MIME kan du ikke rigtig stole på i samme grad.
Avatar billede 123maka Nybegynder
14. august 2004 - 01:04 #4
Jo sagtens, så udskriver den:
"Forkert filtype, billeder må kun være .jpeg billeder
Din fil var af typen"
Avatar billede dennismp Nybegynder
14. august 2004 - 01:16 #5
Underlig - jeg får typen "image/jpeg" når jeg prøver.. hmm.. Hvad siger getimagesize() ?
Avatar billede 123maka Nybegynder
14. august 2004 - 03:09 #6
Koden til upload tingen er:
<form name="form1" method="post" enctype="multipart/form-data" action="profilbillede.php">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
<input name="img" type="file" size="45"><input type="submit" name="Submit" value="Upload">
</form>
Avatar billede 123maka Nybegynder
14. august 2004 - 03:15 #7
Den udskriver ingenting :/.
Avatar billede 123maka Nybegynder
14. august 2004 - 03:16 #8
Problemet er at den slet ikke trækker noget ud fra girl.jpg, den åbner slet ikke filen, tror jeg.
Avatar billede dennismp Nybegynder
14. august 2004 - 03:17 #9
Får den overhovedet uploadet filen? Hvad siger størrelsen?
Avatar billede 123maka Nybegynder
14. august 2004 - 03:19 #10
Nej dennismp, den får ikke uploadet noget, fordi  if($aFile[type] == 'image/jpeg' OR $aFile[type] == 'image/pjpeg') { ikke er sand, eller hvad mener du?
Avatar billede dennismp Nybegynder
14. august 2004 - 03:26 #11
prøv at lave en print_r( $_FILES['img'] ) - og se hvad du får af værdier..
Avatar billede 123maka Nybegynder
14. august 2004 - 03:26 #12
echo getimagesize($_FILES["img"]["tmp_name"]); udskriver intet.
Avatar billede 123maka Nybegynder
14. august 2004 - 03:27 #13
Din fil var af typen Array ( [name] => girl.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 )
Avatar billede dennismp Nybegynder
14. august 2004 - 03:32 #14
http://dk2.php.net/manual/da/features.file-upload.errors.php

UPLOAD_ERR_FORM_SIZE:
Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.

Filen er større en 30.000 bytes. (Faktisk er den: 30.819 bytes)
Avatar billede dennismp Nybegynder
14. august 2004 - 04:04 #15
Belastende at sidde og glo' på den vedligeholdses-side :(. Anyway, jeg smutter i kassen. Ret hvor meget en fil max. må fylde, og så tror jeg det virker.
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