0251 / 590 837 15
info@a-coding-project.de
;

Upload-Script integrieren (CMS)

Code & Blog Logo

Code & Blog Logo

Daniel hat bereits eine Basis für den Upload-Bereich unseres CMS erstellt. Dieses werden wir heute ins einbauen. Ich hab das ganze nochmal ein bisschen überarbeitet (Sorry Daniel^^).

Wer Lust hat kann ja mal im Forum vorbeischauen, dort gibt es noch weitere Erweiterungen von anderen Usern 😉

Wir verlinken im Menü bereits auf die /admin/includes/files.php. Diese Datei war bisher noch nicht vorhanden. Sie listet nun die Dateien auf und zeigt das Upload-Formular an:

<h1>Dateien</h1>
<form enctype="multipart/form-data" action="/admin/index.php?page=upload" method="post">
Datei: <input type="file" name="file">
<input type="submit" value="Datei hochladen">
</form>

<?php
  $verz="/";
  $verzeichnis = openDir("../content/uploads");
?>
  <p>Verzeichnis <b><?PHP echo $verz; ?></b> enthält folgende Dateien:</p>
  <ul>
    <?PHP
      while ($file = readDir($verzeichnis)) {
        if ($file != "." && $file != ".."){
          echo "<li><a href="../content/uploads".$verz."/".$file."">".$file."</a></li>";
        }
      }
      closeDir($verzeichnis); 
    ?>
  </ul>

Wie ihr daraus vielleicht erkennen könnt, werden die Dateien nach /content/uploads hochgeladen. Den Ordner uploads müsstet ihr vorher noch anlegen.

Kommen wir zur Seite mit dem Upload. Hier hatte Daniel zuvor noch ein paar Überprüfungen bzgl. Dateiformat und Größe gemacht. Das fand ich nicht ganz sinnvoll, da der Admin in der Lage seien sollte, alles hochzuladen. Die Datei /admin/includes/upload.php sieht nun so aus:

<?php
  $tempname = $_FILES['file']['tmp_name'];
  $name = $_FILES['file']['name'];
  if(copy($tempname, "../content/uploads/".$name)) {
    echo "Die Datei ".$name." wurde erfolgreich hochgeladen!";
  }
  else {
    echo "Der Upload ist leider fehlgeschlagen.";
  }
?>

Ich hab vor das ganze noch ein wenig auszuweiten. Es wäre zum Beispiel schön, wenn man Ordner erstellen könnte. Auch die Einbindung von Bildern in die Seite wird noch ein Thema sein. Evtl. werden die Funktionalitäten des Uploads noch in eigene Funktionen gepackt, damit auch an verschiedenen Stellen darauf zugegriffen werden kann.

An dieser Stelle muss ich mich natürlich noch bei Daniel für dieses Script bedanken. Wie oben schon geschrieben, gibt es im Forum noch mehr Erweiterungen. So zum Beispiel auch das Community-System (inkl. neuem Design) vom Renner. Schaut doch mal vorbei: http://forum.stevieswebsite.de/eigenes-cms-f12/

Kommentare

Daniel schrieb am 29.10.2009:

Solltest Du ja. Ich bin doch dein Padawan. ;-)

Daniel schrieb am 29.10.2009:

Das mit den Überprüfungen bzgl. Dateiformat und Größe habe ich für das Multiusersysem gedacht. Ich möchte ja als Admin den Usern nicht erlauben schädliche Dateien auf meinen Server zu laden.

Renner schrieb am 29.10.2009:

JO finde das ding schon ganz schick. meine idee wäre das man später wenn man nen content einbindet ne art "Vorhandene-Bilder-Liste" hat. Dann muss man nur noch auf das gewünschte bild klicken und dann wird es mit java script eingefügt. Oder man benutzt den CK-Editor (nein nicht FCK .. CK ist der nachfolger von FCK;) auf http://mjrenner.de/css zusehen) Da kann man die Bilder auch bewquem per Drag and Drop reinziehen .. werde mich heute mal mit photoshop das design mit schönen grafiken auffrischen und euch dann präsentieren

Daniel schrieb am 29.10.2009:

Was noch fehlt ist ein Button zum löschen der Datei analog zum Löschen der Seiten.

Stefan Wienströer schrieb am 29.10.2009:

Padawan?? Die Dateigröße usw. ist auch gut geeignet fürs Multi-User System. Wenn wir das mal soweit ausbauen, würd ich vorschlagen, dass wir im Admin-Bereich solche Regeln festlegen können. Wir müssten am besten die Dateien in der DB registrieren, so dass wir per SQL ganz leicht die Bilder raussuchen. In der Seite selber würd ich sogar sagen, dass wir diese z.B. nicht per HTML einbinden, sondern über ne ID und das ganze nachher mit Regex in HTML konvertieren. So sind wir nicht an feste Speicherplätze gebunden. Was auch noch cool wäre, ist wenn man zum Beispiel später sehen kann, welches Bild auf welcher Seite noch verwendet wird. Und ne Art Thumbnails wär auch ganz gut. Der Button zum löschen wird wahrscheinlich auch schon sehr früh reinkommen.

Daniel schrieb am 29.10.2009:

Automatische Thumbnaildarstellung würde aber die GD-Bibliothek auf dem Server voraussetzen. Oder ist euch ein Workaround bekannt? Zum Rechtesystem: Ich habe neulich ein Tutorial gelesen welches das Rechtesystem aus Zweierpotenzen baut. Wenn ich nur die URL finden würde. Ahh hier: http://www.webmasterpro.de/coding/article/php-ein-einfaches-flexibles-rechtesystem.html Ob das was für uns wäre?

m1staX schrieb am 05.10.2011:

Um die hochgeladene Datei in den /uploads Ordner zu schieben, gibt es in PHP die Funktion move_uploaded_file(). Diese würde ich anstatt copy() bevorzugen. btw.. weis jemand wohin wo die Datei temporär gespeichert wird, bevor man sie verschiebt bzw. kopiert? Würde mich mal interessieren.

Stefan Wienströer schrieb am 05.10.2011:

werd ich mal notieren. Den temporären Speicherplatz kannst du mit print_r($_FILES); herausfinden.

m1staX schrieb am 05.10.2011:

Ahaaa ;-)