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

Ausgedruckt am: 29.03.2024 um 09:03 Uhr

Mitglied: Dani
Dani 10.11.2006 um 19:13:17 Uhr
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
Mitglied: DeeDee0815
DeeDee0815 10.11.2006 um 20:07:28 Uhr
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
Mitglied: mf
mf 14.11.2006 um 09:05:10 Uhr
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
Mitglied: DeeDee0815
DeeDee0815 14.11.2006 um 18:16:28 Uhr
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