Gå til innhold

Problemer med upload av bilder..


Anbefalte innlegg

Hei!

 

Plages litt med å få lastet opp bilder fra PC, av en eller annen grunn. På Mac er ikke dette noe problem. Bruker får gjentatte ganger opp feilmeldingen "Kun jpg, png og gif- bilder er tillatt." ved forsøk på å laste opp .jpeg- bilder fra PC. Ser på php.net at det er mulig Explorer sender annen info enn ordinære nettlesere, men sjekker jeg for både jpg og jpeg, burde jeg jo være i boks..?

 

Hva er det jeg kan ha oversett i følgende kode? På forhånd takk.

 

$filtype = $_FILES['image']['type'];

 

if (!(strstr($filtype, "jpeg") || strstr($filtype, "jpg") || strstr($filtype, "png") || strstr($filtype, "gif"))) {

echo "Kun jpg, png og gif- bilder er tillatt.";

}

else { // .. Bildet lastes opp og skaleres deretter til riktig størrelse.

Endret av funkyboy
Lenke til kommentar
Videoannonse
Annonse
type gir mimetype, ikke filendelse. Det står image/jpg, image/jpeg, image/gif osv.

 

Ja, det er nettopp dette som er poenget. Derfor benytter jeg strstr(); for å sjekke om dene inneholder de uttrykkene som skal være godkjent. Det skal eksempelvis ikke mulig å laste opp en fil som er endret fra test.swf til test.jpg.

Lenke til kommentar
<?php

$allowedFiletypes = array(
	'image/gif',   // Opera, Firefox, Internet Explorer
	'image/jpeg',  // Opera, Firefox
	'image/png',   // Opera, Firefox
	'image/pjpeg', // Internet Explorer
	'image/x-png'  // Internet Explorer
);

if ( !in_array( $filtype, $allowedFileTypes ) ) {
	$Message[] = "Kun JP(E)G, PNG og GIF-bilder er tillatt";
} else {
	// *File allowed*
}

?>

Lenke til kommentar

Takker for svar! Array er egentlig en mye bedre måte her ja. :D

 

Men er det ikke akkurat dette jeg har gjort i praksis? Verdien "jpeg" vil jo finnes i både jpeg og pjpeg, og verdien "png" finnes jo i både "png" og "x-png". Så skjønner egentlig ikke bæra av hvorfor dette ikke lar seg gjøre. Så om jeg skifter ut kodesnutten, vil jeg uansett få samme problem. Er det noe annet som kan gjøre at jeg møter på dette problemet?

Lenke til kommentar
Når du laster opp et bilde:

 

<?php
echo "<pre>" . print_r($_FILES['image'], true) . "</pre>";
?>

 

Last opp f.eks. et png bilde i de forskjellige nettleserne så kan du se hvilke type de returnerer.

 

Problemet er bare at jeg ikke har PC tilgjengelig om dagen. Men skal få fikset det snart. Uansett takk for svar. :D

Lenke til kommentar
  • 3 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...