deedee0815
Goto Top

Dateityp von hochgeladenen Dateien auslesen

Hallo,

ich möchte überprüfen, ob eine hochgeladene Datei im TARGZ-Format vorliegt. Wie macht man das? Bei Bildern geht das ja mit getimagesize(), das hilft aber logischer Weise nicht bei Archiven. Die Funktion filetype http://us2.php.net/filetype hilft mir, jedenfalls mit dem unter dem Link beschriebenem Syntax nicht weiter. Ich hätte es - wie gesagt - schon gerne etwas genauer als fifo, char, dir, block, link, file oder unknown.

Gruß
DeeDee0815

Content-Key: 44176

Url: https://administrator.de/contentid/44176

Printed on: April 18, 2024 at 08:04 o'clock

Member: Dani
Dani Nov 10, 2006 at 18:13:17 (UTC)
Goto Top
Hi,
also so müsste es gehen. Du musst halt noch den Pfad anpassen und die Dateitypen.

if($_FILES["file"]["name"]!="") //Wurde ein Bild überhaupt ausgewählt?  
	{
	// Variabeln festlegen für Bild-Upload
	$allowed_types = "(jpg|jpeg|gif)"; //Erlaubte Endungen des Bildes  
	$name=$_FILES["file"]["name"]; //Bildname (beispiel.jpg) in Variable $bildname zuweisen  
	$name=str_ireplace(' ', "_", $name); //Leerzeichen werden durch _ ersetzt  

	// Existiert das Bild schon auf dem Server?
	if(file_exists("PFAD/$name"))  
		{
		echo "<h2><b>Der Dateiname des gewünschten Bildes ist bereits vorhanden,  
Sie müssen den Bildnamen umbenennen!</b></h2>"; //Ausgabe der Fehlermeldung  
		}
	else //Andernfalls, wenn das Bild auf dem Server nicht existiert
		{
		// Wurde wirklich eine Datei hochgeladen?
		if(is_uploaded_file($_FILES["file"]["tmp_name"]))  
			{
			// Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen)
			if(preg_match("/\." . $allowed_types . "$/i", $_FILES["file"]["name"]))  
				{
				ECHO "DATEI OK"  
				}
			else //Datei ungültige Endung
				{
				echo "<h2><b>Die Datei besitzt eine ungültige Endung.</b></h2>";  
				}
			}
		else //Keine Datei angegeben
			{
			echo "<h2><b>Keine Datei zum Hochladen angegeben.</b></h2>";  
			}

		}
	}

Gruß
Dani
Member: DeeDee0815
DeeDee0815 Nov 10, 2006 at 19:07:28 (UTC)
Goto Top
Hi Dani,

erstmal danke für deine Hilfe. Doch dies ist nicht ganz das was ich suche. Denn die überprüfung des Dateityps erfolgt hier nur durch überprüfen der Dateiendung. Geht das nicht auch sicherer? Außerdem könnte es ja sein, dass jemand seine Dateien ohne Endung speichert - der Jenige könnte dann keine Datei hochladen.

Gruß
DeeDee0815
Member: mf
mf Nov 14, 2006 at 08:05:10 (UTC)
Goto Top
Probiere es mal mit dem Shell-Command "file <dateiname>"
Hier bekommst du Deine gewünschten Information.

ws-linux-01:/usr# file /usr/share/gettext/archive.tar.gz
/usr/share/gettext/archive.tar.gz: gzip compressed data, from Unix
ws-linux-01:/usr#

Die Ausführung kannst du mit system() oder exec() machen. Die Auswertung dann wiederrum in PHP. mehr dazu unter php.net/system und php.net/exec
Member: DeeDee0815
DeeDee0815 Nov 14, 2006 at 17:16:28 (UTC)
Goto Top
Ok danke für deine Hilfe. Leider habe ich keinen Rootserver, sondern nutze kostenlosen Webspace. Folglich sind die Funktionen exec() bzw. system() deaktiviert. Aber so wie ich das verstehe, gibt es keine PHP-Funktion dafür.

Trotzdem danke - immerhin gut zu wissen, wie man das macht.

Gruß
DeeDee0815