Avatar billede mpj_86 Nybegynder
05. juli 2006 - 14:27 Der er 29 kommentarer og
1 løsning

Hjælp til upload, igen

Hej

Jeg har lavet så hvis det billede man uploader er større end 1024 * 768 så ændre den størrelsen på billedet til det..

Det virkede også perfekt end til jeg tilføjet switch($ext)..

Ved ikke om det er switch'en, da det er den første gang jeg bruger switch.. :/

Nogen der ved hvorfor det ikke virker?

http://www.hot-cars.dk/
Avatar billede iss Novice
05. juli 2006 - 14:34 #1
Hvis du har exif modulet slået til, så kig på det. For bare at kigge på extension på en fil er ikke godt nok, det vil give fejl... Ellers kig på getimagesize.
Avatar billede mpj_86 Nybegynder
05. juli 2006 - 14:36 #2
Forstår dig ikke helt..
Avatar billede mpj_86 Nybegynder
05. juli 2006 - 16:03 #3
Men den virkede jo før jeg sættede switch($ext) ind..
Avatar billede iss Novice
05. juli 2006 - 19:27 #4
Kigger på det senere...
Avatar billede mpj_86 Nybegynder
05. juli 2006 - 21:20 #5
oki..
Avatar billede iss Novice
05. juli 2006 - 23:14 #6
Du har fået byttet totalt rundt på det.... og jeg kan ikke lige se din ide med dit script, for det ligner noget der er taget 12 forskelligesteder fra og variabler bliver ved med at skifte navn, og det er nok også det der har fået dig helt up hvor du ikke kan bunde, især det at $nim ikke bliver sat, og du forsøger at sætte kvalitet på png og gif...

Tror du skal kigge på exif funktionerne istedet, plus det at kigge på fil extension ikke er den bedste måde at finde ud af hvilket type billed det er...
Avatar billede mpj_86 Nybegynder
05. juli 2006 - 23:25 #7
Nu har jeg fjernet min switch($ext) igen og nu virker det 100% igen..

Men det virker jo så ikke når jeg uploader gif eller png..

Koden er noget jeg har fundet, og så er jeg igang med at få det til at passe, så jeg ved ikke så meget om det..
Avatar billede mpj_86 Nybegynder
05. juli 2006 - 23:39 #8
Nu har jeg kigget lidt på php.net..

Er det sådan du mener?

switch(exif_imagetype($_FILES['fil']['name'][$numb])) {
case (IMAGETYPE_GIF):
    $image = imagegif($nim,$path . $name,$quality);
    $imagecreatefrom = imagecreatefromgif($_FILES['fil']['tmp_name'][$numb]);
break;
case (IMAGETYPE_PNG):
    $image = imagepng($nim,$path . $name,$quality);
    $imagecreatefrom = imagecreatefrompng($_FILES['fil']['tmp_name'][$numb]);
break;
default:
$image = imagejpeg($nim,$path . $name,$quality);
$imagecreatefrom = imagecreatefromjpeg($_FILES['fil']['tmp_name'][$numb]);
}

Kan man da ikke ændre kvalitet på gif og png?
Avatar billede mpj_86 Nybegynder
05. juli 2006 - 23:52 #9
Jeg har kigget lidt på http://dk.php.net/manual/en/function.imagecopyresampled.php

Ifølge Example 2 så ser det ud til at koden skulle være rigtig´, altså det med $nim
Avatar billede mpj_86 Nybegynder
06. juli 2006 - 00:12 #10
Nu har jeg ændret min kode til sådan som php.net vil have det, og det går endda hurtigere end det gamle :)

Så nu har jeg kun følgende spørgsmål:
Kan man ændre størrelsen og kvaliteten på gif og png?

Sådan som jeg har ændret min switch - (05/07-2006 23:39:40) er det den rigtige måde at tjekke filtypen?
Avatar billede iss Novice
06. juli 2006 - 08:38 #11
Kan jeg ikke se... du har sat password på din side...
Avatar billede mpj_86 Nybegynder
06. juli 2006 - 10:04 #12
Sådan her?

switch(exif_imagetype($_FILES['fil']['name'][$numb])) {
case (IMAGETYPE_GIF):
    echo 'Billedet er i .gif format.';
break;
case (IMAGETYPE_PNG):
    echo 'Billedet er i .png format.';
break;
default:
    echo 'Billedet er i .jpg format.';
}

Kan man ændre størrelsen og kvaliteten på gif og png?
Avatar billede iss Novice
06. juli 2006 - 10:07 #13
Størrelsen ja, kvaliteten, nej. Og exif er måde til at se hvilket format det er, men man kan ikke bare sige at hvis det ikke er png eller gif så er det jpg... det kunne jo være bmp der hedder gif....
Avatar billede mpj_86 Nybegynder
06. juli 2006 - 10:15 #14
$ext = strtolower(strrchr($_FILES['fil']['name'][$numb],'.'));
if (in_array($ext, $filtyper) && $_FILES['fil']['size'][$numb] < $max_kb*1024) {

Det vil sige alt jeg skal slette det her kode, og så bruge exif_imagetype() istedet?

Det med at den ikke tjekker efter andre fil typer, der kunne man vil bare lave et array med: IMAGETYPE_GIF, IMAGETYPE_PNG og så tjekke om de er tilladte som filtyper med in_array($streng, $anden_streng)?
Avatar billede iss Novice
06. juli 2006 - 10:24 #15
Du skal tage højde for flere ting, at det der uploades ikke er andet end nogle af de billeder du vil have, og at det ikke ender på noget som kan køres på serveren.

Dvs jeg må ikke kunne uploade et gif billede som har noget php i sig og ender på php... osv...

Så der skal være kontrol på hvad filen ender på og hvilken data der er i filen så dine funktioner ikke fejler.
Avatar billede mpj_86 Nybegynder
06. juli 2006 - 10:26 #16
Oki, nu forstår jeg det...

Tak for hjælpen.

Smid et svar.
Avatar billede iss Novice
06. juli 2006 - 10:49 #17
Ellers tak...
Avatar billede mpj_86 Nybegynder
06. juli 2006 - 10:58 #18
oki..

Jeg har lige lavet en fil med phpinfo();

Der står:

EXIF Support  enabled 
EXIF Version  1.4 $Id: exif.c,v 1.118.2.37.2.4 2006/01/01 13:46:52 sniper Exp $ 
Supported EXIF Version  0220 
Supported filetypes  JPEG,TIFF 

Det vil sige at jeg så ikke kan bruge exif_imagetype?


Så kan jeg vil bruge: getImageSize ?
Avatar billede iss Novice
06. juli 2006 - 11:10 #19
Så længe EXIf er slået til virker det, det der supported er at læse ekstra info ud med exif_read_data.
Avatar billede mpj_86 Nybegynder
06. juli 2006 - 11:21 #20
Syntes bare ikke jeg kan få det til at virke..

Ser det ritigt ud?

switch(exif_imagetype('image.jpg')) {
case (IMAGETYPE_GIF):
    echo 'Billedet er i .gif format.';
break;
case (IMAGETYPE_PNG):
    echo 'Billedet er i .png format.';
break;
case (IMAGETYPE_JPEG):
    echo 'Billedet er i .jpg format.';
default:
    echo 'Din fil skal være i enten gif, jpg eller png format.';
}

Den skriver kun: Din fil skal være i enten gif, jpg eller png format.
Avatar billede iss Novice
06. juli 2006 - 11:53 #21
Du har nogle små fejl, men det betyder ikke at det ikke skulle virke:
switch (exif_imagetype($img)) {
case IMAGETYPE_GIF:
    echo 'Billedet er i .gif format.';
    break;
case IMAGETYPE_PNG:
    echo 'Billedet er i .png format.';
    break;
case IMAGETYPE_JPEG:
    echo 'Billedet er i .jpg format.';
    break;
default:
    echo 'Din fil skal være i enten gif, jpg eller png format.';
}

Så din fejl hvis det ikke virker ligger et andet sted.
Avatar billede mpj_86 Nybegynder
06. juli 2006 - 12:05 #22
Avatar billede mpj_86 Nybegynder
06. juli 2006 - 12:08 #23
Det var mig der havde gjort noget forkert..

Det virker perfekt, tak..
Avatar billede iss Novice
06. juli 2006 - 12:11 #24
Virker fint for mig, og har selv version 1.4 $Id: exif.c,v 1.173.2.5 2006/04/10 18:23:24 helly Exp $ og har ingen problemer. Måske din version har bugs...
Avatar billede mpj_86 Nybegynder
06. juli 2006 - 12:14 #25
Det virkede da jeg kun havde den i test.php

Men når jeg skal uploade et billede så skriver den:

Din fil skal være i enten gif, jpg eller png format.Filen er uploadet :D

Der skulle den jo så have skrevet: Billedet er i .jpg format.Filen er uploadet :D

http://www.hot-cars.dk
Avatar billede mpj_86 Nybegynder
06. juli 2006 - 12:20 #26
Ved godt det ikke er lavet rigtigt endnu, men jeg vil gerne have det til at virke først, inden jeg fjerner den jeg bruger nu til at vælge filtyper..
Avatar billede mpj_86 Nybegynder
06. juli 2006 - 12:33 #27
Nu har jeg prøvet at bruge exif_imagetype(), til at tjekke om det er en tilladt filtype..

Når jeg skal uploade et billede så skriver den nu: Din fil skal være i enten gif, jpg eller png format.Din fil skal være i enten gif, jpg eller png format, og fylde mindre end 1mb.
Avatar billede iss Novice
06. juli 2006 - 12:47 #28
Tror når du laver noget du skal til at slå ALLE fejl til...

$img = exif_imagetype($_FILES['fil']['name'][$numb]); vil give fejl, som efter der ikke er nogen fil med det navn... $_FILES['fil']['tmp_name'][$numb] er der...

Og sådan er der så meget, tror du skal starte med at gå tilbage til hvor du kan overskue det, og så tilføje EN ting ad gangen.
Avatar billede mpj_86 Nybegynder
06. juli 2006 - 13:45 #29
HeHe, manglede bare tmp_ som du skrev, og nu virker det hele, tak..

Vil du stadig ikke have nogle points? Kan godt oprettet et spm med 150 points hvis det er...
Avatar billede iss Novice
06. juli 2006 - 13:48 #30
Ellers tak...
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