04. maj 2005 - 15:03
Der er
32 kommentarer og 2 løsninger
Finde filtype på et billede, når man uploader
Hvordan kan jeg finde en billedetype (.gif eller .jpg). Mig og nogle venner har før prøvet, men uden held. Har engang fundet noget kode, som tjekkede om filnavnet indeholdte .jpg eller .gif , men hvad nu hvis et billede hed mig.gif.jpg, så ville det jo gå i kuk.
Annonceindlæg fra Barco
$extension = strtolower( end( explode( '.', $filnavn ) ) ); list($width, $height, $type, $attr) = getimagesize( $filnavn ); switch ( $type ) { case 1 : $typen = 'gif'; break; case 2 : $typen = 'jpg'; break; default: $typen = 'andet'; }
$str = getimagesize($fil); echo $str[2];
Ja, der var to løsninger dér - Extension, den øverste linje, er ikke sikker - Det er den anden løsning derimod ;)
Hvilken en er det i siger er sikker?
$str = getimagesize($fil); $filtyper = array(1 => "gif", 2 => "jpg", 3 => "png"); echo strtr($str[2], $filtyper); eller, if(false != ($str = getimagesize($fil))) { $filtyper = array(1 => "gif", 2 => "jpg", 3 => "png"); if(array_key_exists($str[2], $filtyper)) { echo strtr($str[2], $filtyper); } }
Hvilken af alle dem i er kunnet med er så sikker og meget simpel, det eneste den skal gøre er at skrive gif eller jpg ellers { $warning ="bla bla";}
if(false != ($str = getimagesize($fil))) { $filtyper = array(1 => "gif", 2 => "jpg"); if(array_key_exists($str[2], $filtyper)) { echo strtr($str[2], $filtyper); }else{ echo"Filtype ikke godkendt"; } }else{ echo $fil ." er ikke et billede"; }
$typen = 'andet'; if ( $inf = @getimagesize( $filnavn ) ) { switch ( $inf[2] ) { case 1 : $typen = 'gif'; break; case 2 : $typen = 'jpg'; break; } } if ( $typen == 'andet' ) { echo "Warning!"; } else { echo "Typen var $typen"; }
Kan man godt gøre sådan at den henter fra $_FILES["image"]["tmp_name"]
jada :O) if(false != ($str = getimagesize($_FILES["image"]["tmp_name"]))) { $filtyper = array(1 => "gif", 2 => "jpg"); if(array_key_exists($str[2], $filtyper)) { echo strtr($str[2], $filtyper); }else{ echo"Filtype ikke godkendt"; } }else{ echo $_FILES["image"]["name"] ." er ikke et billede!!!"; } Og så også lige et svar :O)
Ja, og ved min erstatter du bare $filnavn med $_FILES["image"]["tmp_name"] ;P
Kan jeg gøre sådan her: $file = getimagesize($_FILES["image"]["tmp_name"]) if($file[2] == "gif"){ $type = ".gif" } else if($file[2] == "jpg"){ $type = ".jpg" } else { $warning }
Nej, $file[2] returnerer et tal $file = getimagesize($_FILES["image"]["tmp_name"]) if($file[2] == 1){ $type = ".gif"; } else if($file[2] == 2){ $type = ".jpg"; } else { $warning; }
Nå ok. Tak. Lige et sidste spg: Hvordan kan jeg lave så warning er et array og der kommer flere warning'er ind i den. Hvordan kan jeg så smide flere der ind? Kan godt udskrive dem, men ikke få dem ind.
$warning = array(); $warning[] = 'En warning'; $warning[] = 'En anden warning'; $warning[] = 'En tredje warning';
En aldersidste ting. Hvordan kan jeg tjekke om et array er tomt? Hvis det er skal den udføre vis ikke skal den ikke gøre noget.
if ( is_array( $array ) && count( $array ) > 0 ) { // Vis det eller sådan noget :) } else { echo "Arrayet er tomt"; }
$array udskifter jeg med $warning[]
Får fejl: Fatal error: Cannot use [] for reading in /mnt/raid/www/www/babegalleri/test/img_add.php on line 27 Det er denne linje: if(!is_array($warning)[] && count($warning[])>0){
Hovsa self: if(!is_array($warning[]) && count($warning[])>0){
Du skal kun bruge [] når du tilføjer: if(!is_array($warning) && count($warning)>0){
if(is_array($warning) && count($warning)>0){
Ok så er det vist klaret :)
Jeg er desværre kommet i tanke om at vi nok ikke kan bruge: $image = $_FILES["image"]["tmp_name"]; $file = getimagesize($image); if($file[2] == 1){ $type = ".gif"; } else if($file[2] == 2){ $type = ".jpg"; } else { $warning[] = "Kun .jpg eller .gif billedetyper bliver godkendt!"; } Hvad nu hvis de prøver med en .txt fil eller andet, vil der så ikke komme php fejl?
Du får ikke en PHP-fejl hvis du bruger min ;P
Men kan ikke rigtig finde rundt i din, kan du flette det så den ville have givet fejl osv, ligesom det jeg postede, bare med din kode?
Er det bare denne linje, som gør at det ikkke ville give fejl? $inf = @getimagesize( $filnavn )
Yeps, og så indkapsl det i en if: if ( $inf = @getimagesize( $filnavn ) )
Sådan her?: $image = $_FILES["image"]["tmp_name"]; if($file = @getimagesize($image)){ if($file[2] == 1){ $type = ".gif"; } else if($file[2] == 2){ $type = ".jpg"; } else { $warning[] = "Kun .jpg eller .gif billedetyper bliver godkendt!"; } }
evt: $image = $_FILES["image"]["tmp_name"]; if($file = @getimagesize($image)) { if($file[2] == 1) { $type = ".gif"; } else if($file[2] == 2) { $type = ".jpg"; } else { $warning[] = "Kun .jpg eller .gif billedetyper bliver godkendt!"; } } else { $warning[] = "Kun .jpg eller .gif billedetyper bliver godkendt!"; }
Nå ja okay, det kan jeg jo godt se :)
Vi tilbyder markedets bedste kurser inden for webudvikling