P H P - Personal Home Page
9. spezielle datei-operationen
9.1 datei hochladen (upload)
Mit einem speziellen formular kann man von einem PC eine datei auf den server hochladen. Die konstruktion von formularen wird in der HTML-dokumentation erklärt, hier wird nur auf die besonderheiten des speziellen formulars eingegangen.
<form enctype="multipart/form-data" action="seite.php" method="POST">
[ <input type="hidden" name="MAX_FILE_SIZE" value="wert" /> ]
<input name="fname" type="file" />
Das form-tag benötigt das enctype-attribut mit der angabe multipart/form-data und die methode POST. Es ist ein input-tag mit dem typ file nötig; das tag muss ein name-attribut haben, der hier verwendete, frei wählbare name fname wird in der aufgerufenen seite verwendet. Wahlweise kann ein input-tag mit dem typ hidden angegeben werden. Das tag benötigt das name-attribut mit der angabe MAX_FILE_SIZE und einen numerisch wert als value-attribut. Damit wird für die hochzuladende datei eine maximale größe festgelegt. Das tag muss vor dem input-tag mit dem typ file stehen. Es wurde nicht getestet, was geschieht, wenn wenn die maximale größe überschritten ist.
In der aufrufenden seite bietet das formular die möglichkeit, eine datei für das hochladen auszuwählen. Die datei wird zunächst in eine temporäre datei des servers hochgeladen. Der aufgerufenen seite wird das zweidimensionale, assoziative feld $_FILES mit folgenden werten zur verfügung gestellt mit denen in der aufgerufenen seite das hochladen zum abschluß gebracht werden kann.
$_FILES ["fname"] ["name"] | original-dateiname |
$_FILES ["fname"] ["size"] | dateigöße in bytes |
$_FILES ["fname"] ["type"] | dateityp (stimmt nur bedingt) |
$_FILES ["fname"] ["tmp_name"] | temporäre datei auf dem server |
$_FILES ["fname"] ["error"] | fehlercode (0 = ok) |
prüfen
Es sollte zunächst geprüft werden, ob die datei als temporäre datei
hochgeladen wurde, dazu gibt es zwei möglichkeiten:
if ($_FILES ["fname"] ["size"] > 0)
bessere variante
if (isset($_FILES ["fname"]) AND (!$_FILES ["fname"] ["error"]))
Nur nach erfolgreicher prüfung ist es sinnvoll, das hochladen fortzusetzen.
kopieren
Dann kann die temporäre datei an ihren endgültigen platz kopiert werden,
wird dabei nur neuer-name angegeben, wird die datei in den ordner
der aufgerufenen seite kopiert, es ist aber auch die angabe eines
pfadnamens
(dir / neuer-name u.ä.) möglich.
copy ($_FILES ["fname"] ["tmp_name"], "neuer-name");
oder bessere varianten
move_uploaded_file ($_FILES ["fname"] ["tmp_name"], "neuer-name")
move_uploaded_file ($_FILES ["fname"] ["tmp_name"], basename($_FILES ["fname"] ["name"] )
Mit der letzten anweisung behält die hochgeladene datei ihren ursprünglichen namen. Wenn das gewünscht wird, sollte man unbedingt diese variante verwenden, weil dabei der eventuell mitgelieferte pfadnamen abgeschnitten wird. Soll die datei nicht in den ordner der aufgerufenen seite kopiert werden, muss man schreiben "dir/" . basename.
beispiel definition des formulars
Mit dem nachstehenden formular kann man jetzt eine datei auswählen und die seite testladen.php aufrufen. Das hochladen funktioniert nur mit textdateien, außerdem wird vorsichtshalber nur so getan als ob, d.h. das hochladen wird unterdrückt
datei hochladen – maximal 10KB
Nach der auswahl einer datei wird neben dem button Durchsuchen der dateiname angezeigt. Nach dem betätigen des buttons hochladen wird die in action angegebene seite testladen.php geladen und das formular an die seite übergeben.
seite testladen.php
Die seite wertet das feld $_FILES aus, extrahiert das suffix des
dateinamens und rechnet die größe der datei von bytes auf kilobytes um.
H T M L |
C S S |
p h p |
My S Q L |
JAVASCRIPT |
impressum
Für den inhalt der homepage hartard-bernhard.de
ist im sinne des pressegesetzes verantwortlich:
Bernhard Hartard
Gerhart-Hauptmann-Ring 18
81737 München
089 / 670 39 90
familie.hartard@t-online.de
salvatorische erklärung
Die seiten meiner homepage enthalten links
zu anderen seiten im Internet, auf deren gestaltung und inhalt ich
keinen einfluss habe. Ich übernehme keine gewähr für den inhalt der
verlinkten seiten, rechtsverstöße waren für mich zum zeitpunkt der
verlinkung auf diesen seiten nicht erkennbar, eine ständige inhaltliche
kontrolle der verlinkten seiten ist mir weder möglich noch zumutbar.
Aus rechtlichen gründen distanziere ich mich ausdrücklich vom inhalt
der verlinkten seiten und mache mir deren inhalt nicht zu eigen.
Diese erklärung gilt für alle auf meinen seiten angezeigten links.
CLOSE anzeige schließen
start
Damit startet die homepage neu, d.h. der Steinbeisser treibt wieder sein unwesen.
anfang
Hier beginnen die informationen dieser homepage
zur person
Hier findet man informationen zur person des verfassers dieser homepage, wer er ist, woher er kommt, was er gelernt hat und was er im verlauf seines lebens so getrieben hat.
spiele
Hier finden man einige spiele, aber keine wüsten ballerspiele, sondern einige echte knobeleien (hirn-jogging), zwei gesellschaftsspiele (Mensch ärgere Dich nicht, Kniffel) und das spiel aller frechen schüler: schiffe versenken.
galerien
Ein wenig heimatliebe muss erlaubt sein und deshalb findet man hier einige bildergalerien von Speyer und von seinem Dom.
backbuch
Das ist eine sammlung von backrezepten, aus verschiedenen quellen zusammengetragen und fast alle mit mehr oder weniger erfolg ausprobiert. Da findet man in den endlosen weiten des Internet natürlich mehr und besseres.
stammbaum
Das gehört eigentlich in den privaten bereich dieser homepage, denn hier wird der stammbaum des verfassers der homepage gezeigt. Weil aber beim testen der anwendung auch der stammbaum der Wittelsbacher entstanden ist, wurde beides hier veröffentlicht. Vielleicht interessiert es jemand.
exit
Hier kann man Google oder eine beliebige seite im Internet aufrufen oder diese homepage verlassen.
kontakt
Hier kann man dem verfasser und eigentümer der homepage eine email schreiben.
privat
Hier kommt man in den privaten bereich der homepage, besser gesagt, man kommt da nicht hinein, denn dieser bereich ist geschützt und nur dem eigentümer der homepage zugänglich.
doku
Hier sind die programmiertechniken dokumentiert, mit deren hilfe die homepage gebastelt wurde. Genauer gesagt man findet hier kurz gefasste bechreibungen von HTML, CSS, MySQL und Javascript. Das findet man im Internet natürlich viel ausführlicher aber für einen ersten einstieg in die seltsame welt der programmierung sind diese beschreibungen durchaus brauchbar.