Avatar billede cmau Nybegynder
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.
Avatar billede coderdk Praktikant
04. maj 2005 - 15:10 #1
$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';
}
Avatar billede sukos Juniormester
04. maj 2005 - 15:10 #2
$str = getimagesize($fil);

echo $str[2];
Avatar billede coderdk Praktikant
04. maj 2005 - 15:11 #3
Ja, der var to løsninger dér - Extension, den øverste linje, er ikke sikker - Det er den anden løsning derimod ;)
Avatar billede coderdk Praktikant
04. maj 2005 - 15:11 #4
Og et svar :)
Avatar billede cmau Nybegynder
04. maj 2005 - 15:14 #5
Hvilken en er det i siger er sikker?
Avatar billede sukos Juniormester
04. maj 2005 - 15:14 #6
$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);
    }
}
Avatar billede cmau Nybegynder
04. maj 2005 - 15:18 #7
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";}
Avatar billede sukos Juniormester
04. maj 2005 - 15:21 #8
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";
}
Avatar billede coderdk Praktikant
04. maj 2005 - 15:21 #9
$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";
}
Avatar billede cmau Nybegynder
04. maj 2005 - 15:24 #10
Kan man godt gøre sådan at den henter fra $_FILES["image"]["tmp_name"]
Avatar billede sukos Juniormester
04. maj 2005 - 15:27 #11
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)
Avatar billede coderdk Praktikant
04. maj 2005 - 15:29 #12
Ja, og ved min erstatter du bare $filnavn med $_FILES["image"]["tmp_name"] ;P
Avatar billede cmau Nybegynder
04. maj 2005 - 15:36 #13
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
}
Avatar billede sukos Juniormester
04. maj 2005 - 15:47 #14
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;
}
Avatar billede cmau Nybegynder
04. maj 2005 - 15:53 #15
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.
Avatar billede coderdk Praktikant
04. maj 2005 - 15:55 #16
$warning = array();
$warning[] = 'En warning';
$warning[] = 'En anden warning';
$warning[] = 'En tredje warning';
Avatar billede cmau Nybegynder
04. maj 2005 - 15:58 #17
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.
Avatar billede coderdk Praktikant
04. maj 2005 - 16:00 #18
if ( is_array( $array ) && count( $array ) > 0 )
{
  // Vis det eller sådan noget :)
}
else
{
  echo "Arrayet er tomt";
}
Avatar billede cmau Nybegynder
04. maj 2005 - 16:03 #19
$array udskifter jeg med $warning[]
Avatar billede coderdk Praktikant
04. maj 2005 - 16:04 #20
yep ;P
Avatar billede cmau Nybegynder
04. maj 2005 - 16:11 #21
Tusind tak!
Avatar billede cmau Nybegynder
04. maj 2005 - 16:41 #22
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){
Avatar billede cmau Nybegynder
04. maj 2005 - 16:42 #23
Hovsa self:
if(!is_array($warning[]) && count($warning[])>0){
Avatar billede coderdk Praktikant
04. maj 2005 - 16:44 #24
Du skal kun bruge [] når du tilføjer:

if(!is_array($warning) && count($warning)>0){
Avatar billede sukos Juniormester
04. maj 2005 - 16:44 #25
if(is_array($warning) && count($warning)>0){
Avatar billede cmau Nybegynder
04. maj 2005 - 16:59 #26
Ok så er det vist klaret :)
Avatar billede cmau Nybegynder
05. maj 2005 - 17:07 #27
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?
Avatar billede coderdk Praktikant
05. maj 2005 - 17:12 #28
Du får ikke en PHP-fejl hvis du bruger min ;P
Avatar billede cmau Nybegynder
05. maj 2005 - 17:15 #29
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?
Avatar billede cmau Nybegynder
05. maj 2005 - 17:17 #30
Er det bare denne linje, som gør at det ikkke ville give fejl?

$inf = @getimagesize( $filnavn )
Avatar billede coderdk Praktikant
05. maj 2005 - 17:18 #31
Yeps, og så indkapsl det i en if:

if ( $inf = @getimagesize( $filnavn ) )
Avatar billede cmau Nybegynder
05. maj 2005 - 17:21 #32
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!";
}
}
Avatar billede coderdk Praktikant
05. maj 2005 - 17:29 #33
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!";
}
Avatar billede cmau Nybegynder
05. maj 2005 - 18:00 #34
Nå ja okay, det kan jeg jo godt se :)
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