Hauptmenü

Untermenü

PHP/MySQL - Praxistutorial 4 - Der Upload

1. Die Abschnitte

2. Wichtig

Hier geht es erst mal nur um die grundsätzlichen Dinge bei Upload. Wenn es bei euch also nicht funktionieren sollte, so verzweifelt nicht. Denn dann gibt es mit Sicherheit ein Rechteproblem. Und darauf gehe ich anschließend ein.

3. Die Funktion uploadFile

Gehört natürlich in die inc/upload.inc.php. Zunächst mal treffen wir eine einfache Fallunterscheidung. Hat der Upload geklappt oder nicht. Packt also bitte den Code, der noch kommen wird, in die erste Bedingung.


function uploadFile()
{
  if ($_FILES['datei']['error'] == 0)
  {
    ... 
  }
  else
  {
    return 'Upload fehlgeschlagen';
  }
}

4. Basisdinge

Damit wir uns später nicht einen Wolf tippen, legen wir ein paar Variablen fest, mit denen wir dann arbeiten.


$file     $_FILES['datei']['name'];
$file_tmp $_FILES['datei']['tmp_name'];
$folder   'bla';     

Erläuterung


$file_tmp $_FILES['datei']['tmp_name'];

Hier muss man sich über die Art und Weise klar werden, was mit einer Datei beim Upload geschieht. Sie landet erst als temporäre Datei im entsprechenden temporären Ordner. Der Name sieht dann etwa so aus: "/tmp/phpXVDrq2". Nach der Abarbeitung des Scriptes wird sie normalerweise gelöscht.

5. Der Ordner


if (is_dir($folder))
{
  $dir true;
}
else
{        
  $dir mkdir ($folder);
}

Erläuterung

Mit is_dir überprüfen wir, ob schon ein Ordner mit dem Namen bla vorhanden ist. Wenn nicht, so wird er angelegt. In beiden Fällen bekommt die Variable $dir den Wert true. Denn die benötigen wir jetzt.

6. Datei verschieben

Dies ist der letzte Schritt beim Upload. Wie ich schon sagte, wird die hochgeladene Datei erst temporär abgespeichert. Wir müssen sie also noch an den richtigen Ort verfrachten.


if (is_uploaded_file($file_tmp) && $dir)
{
  if (move_uploaded_file($file_tmp$folder.'/'.$file))
  {
    return 'Supi, hat geklappt';
  }
  else
  {
    return 'So ne gottsverdammte Sch***e';
  }
}

Erläuterung


if (is_uploaded_file($file_tmp) && $dir)

Überprüft, ob auch die richtige Datei hochgeladen wurde. Gibt im Erfolgsfall true zurück. Zusätzlich wird noch geprüft, ob ein entsprechender Ordner vorhanden ist.


if (move_uploaded_file($file_tmp$folder.'/'.$file))

Verschiebt die temporäre Datei in das vorgegebenen Verzeichnis ($folder) und verpasst ihr wieder ihren ursprünglichen Namen. Allerdings klappt das nur, wenn man als "PHP-User" die notwendigen Zugriffsrechte auf den Ordner hat. Außerdem muss man darauf achten, dass es eine saubere Trennung zwischen Ordner und Datei gibt. Das geschieht mit '/'. Denn sonst landet die Datei im selben Verzeichnis wie die index.php und der Name beginnt mit bla. Ist bereits eine Datei gleichen Namens vorhanden, so wird diese überschrieben.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt