PHP Upload: file-typ herausfinden...
Janosh
- php
0 Tom0 Thomas Luethi
hallo team,
ich habe ein upload mit php geschrieben. es macht nichts anderes als ein jpg auf den server hochzuladen. Klappt soweit prima. Jetzt habe ich aber folgendes problem: lädt der user statt einem bild ein pdf hoch will ich, das es in einem anderen ordner landet (z.B. download-ordner). ich muss also unterscheiden. nur wie mach ich das?
so siehts bisher aus:
if (is_uploaded_file($HTTP_POST_FILES['PIC']['tmp_name'][$i]))
{ ...
gibts sowas wie
if (is_uploaded_file (is pdf)... do whatever...?
gruesse janosch
Hello,
ich habe ein upload mit php geschrieben. es macht nichts anderes als ein jpg auf den server hochzuladen. Klappt soweit prima. Jetzt habe ich aber folgendes problem: lädt der user statt einem bild ein pdf hoch will ich, das es in einem anderen ordner landet (z.B. download-ordner). ich muss also unterscheiden. nur wie mach ich das?
so siehts bisher aus:
if (is_uploaded_file($HTTP_POST_FILES['PIC']['tmp_name'][$i]))
{ ...
aus dem Manual:
$_FILES['userfile']['name']
Der ursprüngliche Dateiname auf der Client Maschine.
$_FILES['userfile']['type']
Der Mime-Type der Datei, falls der Browser diese Information zur Verfügung gestellt hat. Ein Beispiel wäre "image/gif".
$_FILES['userfile']['size']
Die Größe der hochgeladenen Datei in Bytes.
$_FILES['userfile']['tmp_name']
Der temporäre Dateiname, unter dem die hochgeladene Datei auf dem Server gespeichert wurde.
$_FILES['userfile']['error']
[$i] ist zuviel. Das Array hat seinen Mehrfachknoten in['PIC'] entsprechend $_FILES["UserFileName"]
Den übermittelten Type würde ich nicth glauben.
Es bleibt Dir wahrscheinlich nicht erspart, die erlaubten Datenformate selber herauszufinden. Dazu müsst das Muster in den ersten 100 Byte bei den meisten Dateiformaten genügen.
Wenn Du die Funktion fertig hast, hätte ich sie auch gerne ;-))
Ich habe das noch auf meiner ToDo-Liste, komme aber nicht dazu.
Viellicht hat PHP 5 ja auch schon sowas eingebaut?
Grüße
Tom
vielen dank, hilft weiter...
ist doch immer so, wenn man was codet und fertig hat gibts dann schon ne fertige funktion zb. in php5
macht aber nix, wir wollen ja auch was leisten. ich leg mal los. tHX janosch
Hello nochmal,
ist doch immer so, wenn man was codet und fertig hat gibts dann schon ne fertige funktion zb. in php5
macht aber nix, wir wollen ja auch was leisten. ich leg mal los.
Mach doch mal eine Liste der wichtigen Dateiformate. Und sag, bei welchen Du anfängst. Wenn ich noch Zeit habe, such ich mir auch welche raus und helfe Dir.
Man kann das für den Anfang am statischen File-Haeder festmachen. Dazu muss man ja nur einige Muster fertigen und mit nem Hex-Editor vergleichen. Besser wäre natürlich, die passende Literatur zu "Dateiformate".
Grüße
Tom
Hallo,
lädt der user statt einem bild ein pdf hoch will ich, das es in einem anderen ordner landet (z.B. download-ordner). ich muss also unterscheiden. nur wie mach ich das?
Der primitivste Ansatz ist, die Endungen der Dateinamen anzuschauen.
Doch die koennen (absichtlich oder unabsichtlich) falsch sein.
Klueger ist es, die Dateien selbst zu analysieren.
Mit getimagesize() kriegst Du schonmal viele Bildformate automatisch,
z.B. GIF, JPEG, PNG, PSD, aber auch SWF.
Die vollstaendige Liste ist einmal mehr nur im englischen Manual:
http://www.php.net/manual/en/function.getimagesize.php
Fuer den Rest musst Du wohl - wie Tom schon vorschlug - die ersten paar
Bytes der Dateien analysieren.
Mit etwas Googeln findest Du bestimmt was.
Und sonst schau selbst in die Dateien rein - mit einem HEX-Editor.
HTH, mfg
Thomas
Gruesse,
Thomas