mime type herkennen
Ik probeer aan de hand van een eenvoudig voorbeeld een scriptje te schrijven waarbij een filtype (mime) kan herkend worden. Maar deze werkt om de een of andere reden niet. Het ingevoerde filetype wordt nooit herkend.
Kan iemand helpen?
Dit is het invoer formulier:
---------------------------
<form name="uploadform" enctype="multipart/form-data" name="uploadform" action="verwerk.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1024" />
<input type="file" name="uploadbestand" />
<input type="submit" name='submit' value="Uploaden" width="200" />
</form>
Dit is het verwerkingspagina:
-------------------------------------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if($_FILES['uploadbestand']['type'] != "image/gif"
AND $_FILES['uploadbestand']['type'] != "image/png"
AND $_FILES['uploadbestand']['type'] != "image/PNG"
AND $_FILES['uploadbestand']['type'] != "image/pjpeg"
AND $_FILES['uploadbestand']['type'] != "image/jpg"
AND $_FILES['uploadbestand']['type'] != "image/JPG"
AND $_FILES['uploadbestand']['type'] != "image/jpeg")
{
echo"filetype niet toegelaten<br>";
}else {
echo"ok, dit was een toegelaten formaat<br>";
}
?>
if($_FILES['uploadbestand']['type'] != "image/gif"
AND $_FILES['uploadbestand']['type'] != "image/png"
AND $_FILES['uploadbestand']['type'] != "image/PNG"
AND $_FILES['uploadbestand']['type'] != "image/pjpeg"
AND $_FILES['uploadbestand']['type'] != "image/jpg"
AND $_FILES['uploadbestand']['type'] != "image/JPG"
AND $_FILES['uploadbestand']['type'] != "image/jpeg")
{
echo"filetype niet toegelaten<br>";
}else {
echo"ok, dit was een toegelaten formaat<br>";
}
?>
doet?
Het kan nl. zijn dat je browser geen mimetype meegeeft. Dan kan je eens zoiets gebruiken als mime_content_type.
Succes.
Groetjes,
Mathijs
De brouwser geeft wel degelijk mimetype mee. Ik heb onderstaande scriptje toegevoegd ter controle en krijg de volledige filenaam en mimetype te zien::
echo"filetype niet toegelaten<br>";
echo$_FILES['uploadbestand']['name']; // dit toegevoegd
:> met jouw voorstel kan ik het mimetype toch niet achterhalen, terwijl dat mijn bedoeling is...
Ik zou de toegelaten (of niet toegelaten) mime-types in een array gooien. De mime-type van de upload controleren en kijken of die in de array voorkomt. Al naar gelang de uitkomst daarvan bepaal je de verdere actie.
Kasper schreef op 16.03.2008 00:42:
Omdat je PHP niet klopt? If...AND: dan zou het mime-type én jpg én png én JPEG etc. moeten zijn, en dat is nooit zo.
Hij controleert of ze het allemaal níét zijn. Als dat zo is, dan is het dus geen geldig filetype, anders wel. Overigens is een array inderdaad netterm zoals Kasper al zegt.
De mime-type die de browser doorgeeft is niet betrouwbaar. Je kunt namelijk een bestand zich laten voordoen voor een ander type bestand. Je zou beter kunnen kijken met behulp van binaire fingerprints of het desbetreffende bestand daadwerkelijk een jpg/jpeg, png of gif is.