Servus Tanja,
ich bastle selber gerade daran herum. Hier ist mein aktueller Stand der Dinge:
Es tut! Juhuuu! ;-)
Es "funzt" endlich, und wie gesagt _mit_ Parameterübergabe, die zusätzlich zum Upload stattfinden soll. Hier ein Ausschnitt meines HTML-Codes mit dem Formular-Bereich:
<!---------------- File-Upload ----------------------------//-->
<form name="uploader" enctype="multipart/form-data" action="admin.php" method="post">
<h4>eine Datei uploaden</h4>
<p>Hier können Dateien auf den Server geladen werden.</p>
<p><input name="aktion" type="hidden" value="datei_upload">
<select name="pfad" size="1">
<option value="">Bitte das Ziel-Verzeichnis auswählen:</option>
<?
// Verzeichnisbaum ermitteln und als Auswahlmenü in die Seite integrieren
$verzeichnisse = make_tree($pfad, "dir");
foreach($verzeichnisse as $verzeichnis)
{
echo '<option value="'.$verzeichnis.'">'.$verzeichnis."</option>\n";
}
?>
</select></p>
<p><input type="file" name="upload_datei"> <input type="submit" value="uploaden!"></p>
</form>
Es ist wichtig, was als Name für das Input-Tag mit type="file" verwendet wird, denn damit sprichst Du im Script dann die hochgeladene Datei an.
Habe das alles heute selbst zum ersten Mal gemacht, daher interessiert Dich vielleicht, was ich dabei gelernt habe... ;-)
Der Server nimmt die hochgeladene Datei zuerst in ein temporäres Verzeichnis auf, wo sie gelöscht werden wird, wenn Du sie nicht vor Ende Deines Skriptes woanders speicherst! Dazu verwendest Du die Funktion "move_uploaded_file()". Aber diese Funktion braucht Parameter.
Welche Parameter? Den Namen der Datei, so wie sie im temporären Verzeichnis des Servers heißt, gefolgt von einem Komma, gefolgt vom Zielpfad der Datei.
Bei mir sieht das so aus:
move_uploaded_file($_FILES['upload_datei']['tmp_name'], $pfad."/".$_FILES['upload_datei']['name']);
Du siehst, dass da verschiedene Variablen stehen. In $pfad habe ich den zu speichernden Pfad (ohne letzten Slash, daher diese ."/". -Geschichte). Die Variable $_FILES ist ein Serverseitiges Array, das verschiedene Informationen speichert. Welche das im Einzelnen sind, das liest Du besser hier nach. http://www.php.net/manual/de/features.file-upload.php
Für uns reicht zunächst, dass die Funktion "move_uploaded_file()" mit den Angaben aus meinem Beispiel die Datei unter dem ursprünglichen Namen speichert.
Das wäre auch schon alles... Du kannst selbstverständlich auch auf alle anderen Parameter des Upload-Formulars zugreifen. In meinem Beispiel habe ich den versteckten Parameter "aktion" mit dem Wert "datei_upload", sowie eine Auswahl an möglichen Werten für den Parameter "pfad". Diese Werte erhälst Du (wie sonst auch) über die Variable (auch wieder ein Array) $_POST. Also meine Werte wären da $_POST['pfad'] für den Inhalt von "pfad" und $_POST['aktion'] für den Inhalt von "aktion".
Du kannst natürlich das Verschieben der hochgeladenen Datei noch mit Prüfungen versehen. Zum Beispiel, ob der Upload überhaupt geklappt hat! Ich habe das so gelöst:
if (move_uploaded_file($_FILES['upload_datei']['tmp_name'], $pfad."/".$_FILES['upload_datei']['name']) && $_FILES['upload_datei']['error'] == 0)
{
echo "<p>Upload war erfolgreich: Die Datei ".$_FILES['upload_datei']['name']." wurde in ".$pfad."/ gespeichert.</p>\n";
}
else
{
echo "Upload war nicht erfolgreich!\n";
}
Wenn Du meinen Code verwenden willst, dann MUSS in deinem Formular im Input-Tag, das den type="file" hat, das Namensattribut (name="") den Wert upload_datei haben, sonst passt die Serverseitige Variable $_FILES['upload_datei']['wasauchimmer'] nicht! Oder Du änderst eben alle upload_datei-Vorkommen auf Dein Beispiel um.
Liebe Grüße aus Ellwangen,
Felix Riesterer.