Frontend Datei Upload Formular

Hallo,

ich bin gerade am Brainstormen für ein Plugin welches registrierten Kunden ermöglicht Bilddatei hochzuladen. Im Backend soll der Upload pro Kunde auch aufgelistet werden.

  • Kundenkonto (Upload für Kunde sichtbar)
  • Checkout (Upload für Kunde sichtbar)
  • Detailseite/Bewertung (Upload für alle sichtbar)

Ergebnisse im Backend anzeigen ist kein Problem, meine Fragen wären eher der Upload/speichern:

  • Wie wird der Upload im Contoller abgewickelt? Mit $_FILES() ?
  • Wohin soll die Datei gespeichert werden? Eigene Ordner oder Shopware-Ordner?
  • Wie kann ich vor unerlaubten Zugriff schützen? 
  • Welches Pluginsystem ist einfacher, das Alte oder das Neue?

Ich danke für eure Hilfe. 

Hallöle, 

  • Wie wird der Upload im Contoller abgewickelt? Mit $_FILES() ?

 Jup, genau. Du bekommst die Datei über $_FILES

  • Wohin soll die Datei gespeichert werden? Eigene Ordner oder Shopware-Ordner?

Ich würde sie in /files oder /media ablegen. darin jeweils ein eigenen unterordner für dein plugin erstellen. Die Verzeichnisse haben auf jeden Fall die nötigen Schreibrechte. Du kannst auch den Media Service nutzen und sie mit in die Medien Verwaltung integrieren. Ist sicherlicher auch nicht doof.

Shopware\Bundle\MediaBundle\MediaService

Relevante Methoden wären für dich:

    /**
     * Create a directory.
     *
     * @param string $dirname The name of the new directory.
     *
     * @return bool True on success, false on failure.
     */
    public function createDir($dirname);

    /**
     * Create a file or update if exists using a string as content.
     *
     * @param string $path The path to the file.
     * @param string $contents The file contents.
     * @param bool $append Append file
     *
     * @return bool True on success, false on failure.
     */
    public function write($path, $contents, $append = false);

    /**
     * Write a new file using a stream.
     *
     * @param string $path The path of the new file.
     * @param resource $resource The file handle.
     * @param bool $append Append file
     *
     * @return bool True on success, false on failure.
     */
    public function writeStream($path, $resource, $append = false);

 

  • Wie kann ich vor unerlaubten Zugriff schützen? 

 

Wie meinst du das? Wovor willst du die Bilder sützen? Vor dem auslesen? Dann bietet sich wiederum der Media Service an. Der gibt deinen Dateien recht kryptische Namen. Oder du vergibst einfach selber kryptische Namen nach einer Zufallszahl.

  • Welches Pluginsystem ist einfacher, das Alte oder das Neue?

Das ist geschmackssache. Ich finde das neue einfacher. Ich würde auch nicht mehr das alte verwenden. Es wird irgendwann abgeschafft. Dann musst du dein Plugin später umschreiben.

HTH, arne 

1 „Gefällt mir“