PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateiendung


[UMC]Curby
12.05.2002, 18:26:32
Hallo erstmol,
Gibt es einen code ,der die Dateiendung einer datei herausfinden kann?

|Coding
12.05.2002, 18:43:48
hmmm,

bei einem uploadscript oder in welcher situation soll dies abgefragt werden?

[UMC]Curby
12.05.2002, 19:49:37
ganz genau ,bei einem upload einer datei

Nev
12.05.2002, 19:54:57
Hi [UMC]Curby

du kannst den Type der Datei auslesen und diesen Überprüfen!

zB:
für Bilder schaut er so aus

$HTTP_POST_FILES["upload"]["type"] != 'image/gif'
$HTTP_POST_FILES["upload"]["type"] != 'image/pjpeg'
$HTTP_POST_FILES["upload"]["type"] != 'image/x-png'


Die Restlichen Typen kannst du einfach so rausfinden indem du dir beim Upload die Datei-Typ ausgibst.

[UMC]Curby
12.05.2002, 20:04:34
ich weiß zwar nicht ,was du da für einen code geschrieben hast ,weder wie ich den anwenden soll ,aber es soll für ALLE dateitypen gehen

ingo
12.05.2002, 20:16:51
das einfachste was du machen kannst, ist die dateiendung auslesen.

$filename="blablabla.txt";
$endung=split("[.]",$filename);
echo $endung[1];


sagt aber halt noch lange nichts über die tatsächliche art der datei aus.

lg, ingo

Progman
12.05.2002, 20:17:15
so


$path_zur_datei="/home/linux/index.css"; //beispiel
$var=explode(".",$path_zur_datei);
echo("Die Dateiendung ist ".$var[1]."<br>
");

bueda
12.05.2002, 20:25:42
wenn man allerdings dateinamen wie "field.data.php" hat wirds schon schwieriger ..
eventuell sollte man dann noch ein count() irgendwo einfügen

[UMC]Curby
13.05.2002, 00:09:15
jo ,dann so:
$path = "downloads/hallo.test.txt";
$path = explode(".",$path);
$endung = $path[count($path)-1];

ist eigentlich ganz einfach

Matt
13.05.2002, 13:31:45
wie wäre es mit Regular Expressions in der Richtung wie:

<?
$filename="test.bla.txt";
$ext=ereg_replace(".*.([^.]*)","1",$filename);
print $ext;
?>

das script nimmt immer das, was du nach dem letzten Punkt hast.

Progman
13.05.2002, 14:11:33
Viele Wege führen nach Rom

Doch man sollte nicht umbedingt den REGEX interpreter anschmeißen, explode(); und count(); ist schon eine gute Kombination

Nev
14.05.2002, 04:09:05
Hi Matt

Bin froh das wir jetzt auch jemanden haben, der sich mit regular Expressions besser auskennt!!
Muß zugeben das einer meiner Schwächen sind.

Wobei es für das etwas übertrieben ist. ;-)

@[UMC]Curby

$path = "downloads/hallo.test.txt";
$path = explode(".",$path);
$endung = $path[count($path)-1];


Das ist eine sehr gute Lösung!!

Mit fällt auch grad kein Datei-System ein das mehr als 1 . für die Endung verwendet.

Beide Lösungen haben auch den Vorteil das sie offen sind gegenüber der Endungs-Länge.
zB: *.mpg == *.mpeg , *.jpg == *.jpeg

Nev
14.05.2002, 04:21:06
UPPS hab noch was vergessen!! Sorry

[UMC]Curby du willst doch dieses Script für einen Upload verwenden, oder??

Da denke ich gleich mal weiter.
Du willst wahrscheinlich bestimmte File-Typen nicht zulassen, oder?

Dann wirst du mit deinem hier geposteten Scripts, die normalen User ausschalten können.

ABER
Wenn du etwas "bessere" User hast, die versuchen trotzdem die Datei hinauf zuladen, indem sie die Datei-Endung einfach umbenennen, hast du den Scherben auf (hoffendlich kennt ihr den Ausdruck -> bin Österreicher)

Warum??
Je nach Server-Configuration kann es sein, die Datei, obwohl es ein anderer MIME-Type ist, ausgeführt wird!!!
Das kann einige Probleme geben!

Wie man das Unterbinden kann, habe ich als 4tes Post in diesem Thread gepostet.


du kannst den Type der Datei auslesen und diesen Überprüfen!

zB:
für Bilder schaut er so aus


$HTTP_POST_FILES["upload"]["type"] != 'image/gif'
$HTTP_POST_FILES["upload"]["type"] != 'image/pjpeg'
$HTTP_POST_FILES["upload"]["type"] != 'image/x-png'


Die Restlichen Typen kannst du einfach so rausfinden indem du dir beim Upload die Datei-Typ ausgibst.


Dieses kleiner Teil überprüft ob die Upgeloadete Datei wirklich die Datei ist, die sie sein sollte.