MimeTyp testen

P

P_F

Guten Abend,

ich möchte für einen Datei-Upload eine Funktion schreiben, die die Datei auf den Typ überprüft.

Vorerst habe ich eine Funktion, die Festlegt welche Dateitypen zugelassen sind:

PHP:
<?
function FileTypes() {
	$type = array();
	// Bilddateien
	$type[0]['type'] = 'image/gif';
	$type[0]['img']  = '.gif';

	$type[1]['type'] = 'image/jpeg';
	$type[1]['img']  = '.gif';

	$type[2]['type'] = 'image/pjpeg';
	$type[2]['img']  = '.gif';

	$type[3]['type'] = 'image/tiff';
	$type[3]['img']  = '.gif';

	$type[4]['type'] = 'image/vnd.wap.wbmp';
	$type[4]['img']  = '.gif';

	$type[5]['type'] = 'image/x-portable-bitmap';
	$type[5]['img']  = '.gif';

	// Applikationen
	$type[6]['type'] = 'application/x-tar';
	$type[6]['img']  = '.gif';

	$type[7]['type'] = 'application/zip';
	$type[7]['img']  = '.gif';

	$type[8]['type'] = 'application/gzip';
	$type[8]['img']  = '.gif';

	$type[9]['type'] = 'application/msexcel';
	$type[9]['img']  = 'excel.gif';

	$type[10]['type'] = 'application/mspowerpoint';
	$type[10]['img']  = 'pp.gif';

	$type[11]['type'] = 'application/msword';
	$type[11]['img']  = 'word.gif';

	$type[12]['type'] = 'application/octet-stream';
	$type[12]['img']  = '.gif';

	$type[13]['type'] = 'application/pdf';
	$type[13]['img']  = '.gif';

	$type[14]['type'] = 'application/postscript';
	$type[14]['img']  = '.gif';

	$type[15]['type'] = 'application/rtf';
	$type[15]['img']  = '.gif';

	$type[16]['type'] = 'application/xhtml+xml';
	$type[16]['img']  = '.gif';

	$type[17]['type'] = 'application/xml';
	$type[17]['img']  = '.gif';

	$type[18]['type'] = 'application/x-http-php';
	$type[18]['img']  = '.gif';

	$type[19]['type'] = 'application/x-javascripz';
	$type[19]['img']  = '.gif';

	// Audio
	$type[20]['type'] = 'audio/x-qt-stream';
	$type[20]['img']  = '.gif';

	$type[21]['type'] = 'audio/x-wav';	
	$type[21]['img']  = '.gif';

	$type[22]['type'] = 'audio/x-midi';	
	$type[22]['img']  = '.gif';

	// Text
	$type[23]['type'] = 'text/comma-separated-values';
	$type[23]['img']  = '.gif';

	$type[24]['type'] = 'text/css';
	$type[24]['img']  = '.gif';

	$type[25]['type'] = 'text/html';
	$type[25]['img']  = '.gif';

	$type[26]['type'] = 'text/javascript';
	$type[26]['img']  = '.gif';

	$type[27]['type'] = 'text/plain';
	$type[27]['img']  = '.gif';

	$type[28]['type'] = 'text/rtf';
	$type[28]['img'] = 'text/xml';
	// Video
	$type[29]['type'] = 'video/mpeg';
	$type[29]['img']  = '.gif';

	$type[30]['type'] = 'video/quicktime';
	$type[30]['img']  = '.gif';

	$type[31]['type'] = 'video/x-msvideo';
	$type[31]['img']  = '.gif';

	
	return $type;
}
?>
Nun die Funktion, die alle Typen durchläuft und mit dem übergebenen Dateitypen vergleicht. Wenn Dateityp und Typ aus Array übereinstimmen, also die Funktion einen Rückgabewert hat, ist die Datei ok.

PHP:
<?
function CheckFileType($FileTypes, $file) {
	for ($i = 0; $i < count($FileTypes); $i++) {
    $filetype = current($FileTypes[key($FileTypes)]);
    if($filetype = $file['type']){
    	$out = $filetype;
      return $out;
      break;
    }
    next($FileTypes);
	} 
}
?>

Wenn ich die Funktion mal mit echo aufrufe, bekomme ich jedoch immer den mimetyp der Datei ausgegeben, auch wenn dieser Typ garnicht in meinem Typen-Array steht.

Bitte helft mir ...
 
Zurück