Ergebnis 1 bis 10 von 10

Thema: Formular Upload in einen Unterordner des Benutzerverzeichnisses

  1. #1
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Frage Formular Upload in einen Unterordner des Benutzerverzeichnisses

    Hallo zusammen

    Ich habe ein Seite mit drei Upload-Formularen (Logo Web, Logo Print, Inserat) für Frontend-Benutzer (Formulare mit dem Formulargenerator erstellt). Die hochgeladenen Dateien werden automatisch im Benutzerverzeichnis des Users gespeichert.

    Ich möchte nun beim Registrieren des Benutzers gleich drei Unterordner im Benutzerverzeichnis erstellen: logo_web, logo_print, inserat.
    Das Erstellen der Ordner ist ansich kein Problem. Nur müsste ich nun in den Upload-Prozess eingreifen können, damit z.B. das Logo Web direkt in den Ordner logo_web gespeichert wird. Nur, wie mache ich das? Die HOOKs processFormData und postUpload greifen ja erst nach dem Upload. Gibt es dafür eine andere Möglichkeit? Ev. das Upload-Formular mit haste erstellen? Wenn ja, wie müsste ich da vorgehen?

    Vielen Dank und Gruss
    Marco

  2. #2
    Contao-Nutzer Avatar von fivebytes
    Registriert seit
    18.01.2013.
    Ort
    Iserlohn
    Beiträge
    93

    Standard

    Hallo marcos,
    Du könntest die Verzeichnisse anlegen, sobald sich ein Mitglied anmeldet (HOOK: PostLogin). Ich habe mal ein paar 1000 Nutzerdaten aus einem anderen System übernommen und musste nachträglich die entsprechenden Nutzerverzeichnisse anlegen, da bin ich auch den Weg gegangen. Sobald ein Login erfolgt wird gechecked, ob die Verzeichnisse existieren und wenn nicht, werden sie angelegt.
    Entspannte Grüße aus Iserlohn
    Stefen

    fivebytes.de - Internetentwicklung & Webdesign | Mit Contao umgesetzt Speedy´s Hamsterseiten

  3. #3
    Contao-Nutzer
    Registriert seit
    03.09.2009.
    Ort
    Baunatal
    Beiträge
    122
    Partner-ID
    6087

    Standard

    Oder auch den "createNewUser"-Hook.

  4. #4
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    Hallo zusammen

    Danke für eure Antworten. Das Problem ist aber nicht, dass erstellen der Ordner sondern dass der Upload den richtigen Ordner auswählt und dort drin die hochgeladene Datei speichert.
    Die Ordner logo_web, logo_print und inserat bei der Registrierung anzulegen ist kein Probem. Nur muss ich nachhher beim jeweiligen Upload sagen können, in welchen Unterordner des Benutzerverzeichnisses diese Datei hin soll...

    Gruss
    Marco

  5. #5
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Vielleicht so:
    https://contao.org/de/manual/3.0/cus...tml#postupload (dort die Datei selbst verschieben)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  6. #6
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    Vielleicht so: https://contao.org/de/manual/3.0/cus...tml#postupload (dort die Datei selbst verschieben)
    An das habe ich auch schon gedacht. Aber das ist ja dann wieder NACH dem Upload. Gibt es für VOR dem Upload keine Möglichkeit? Wäre einfach die sauberere Lösung...

  7. #7
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Schau doch einfach mal in den Code . Ganz am Anfang der Methode processFormData($arrSubmitted, $arrLabels) sitzt der Hook $GLOBALS['TL_HOOKS']['prepareFormData'], damit kommst du noch mal einmal an alle Felder bevor Contao die Verarbeitung des Formulars beginnt

  8. #8
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Thraile Beitrag anzeigen
    Ganz am Anfang der Methode processFormData($arrSubmitted, $arrLabels) sitzt der Hook $GLOBALS['TL_HOOKS']['prepareFormData'], damit kommst du noch mal einmal an alle Felder bevor Contao die Verarbeitung des Formulars beginnt
    Hallo Thraile
    Cool, wusste gar nicht, dass es einen solchen HOOK gibt! Der ist nämlich in der Contao Doku nicht aufgeführt.

    Ich habe jetzt aber noch ein zweites Problem... das Feld homeDir enhält ja eine uuid und alles läuft über die Datenbank. Korrekterweise müsste ich ja beim HOOK "createNewUser" dann die drei Ordner erstellen, irgendwie die Datenbank aktualisieren und hier in diesem HOOK die entsprechende uuid auslesen und diese anstelle des Werts in homeDir setzen?! Sonst würde der Upload doch gar nicht funktionieren?

    Gruss
    Marco

  9. #9
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Zitat Zitat von marcos Beitrag anzeigen
    Hallo Thraile
    Cool, wusste gar nicht, dass es einen solchen HOOK gibt! Der ist nämlich in der Contao Doku nicht aufgeführt.
    Da sind so einige Hooks nicht in der Doku aufgeführt . Daher sollte man immer mal in die entsprechenden Klassen nen Blick werfen, meistens findet man was passendes .

    Zitat Zitat von marcos Beitrag anzeigen
    Ich habe jetzt aber noch ein zweites Problem... das Feld homeDir enhält ja eine uuid und alles läuft über die Datenbank. Korrekterweise müsste ich ja beim HOOK "createNewUser" dann die drei Ordner erstellen, irgendwie die Datenbank aktualisieren und hier in diesem HOOK die entsprechende uuid auslesen und diese anstelle des Werts in homeDir setzen?! Sonst würde der Upload doch gar nicht funktionieren?
    Und dein Problem dabei ist welches ? Das mit dem irgendwie die DB zu aktualisieren? Also, im Hook liest du das Homedir aus und löst über das \FilesModel die UUID zu einem echten Pfad auf. Schau dir mal die Klassen "File", "Files" und "Folder" an, damit kannst du Ordner und Dateien erstellen und Bearbeiten. Wenn du selbst Dateien oder Ordner ins DBAFS hinzufügen möchtest, hilft dir auch einfach \Dbafs::addResource($strFile)....

    Bei deinem FormularFeld musst du in dem oben genannten Hook dann nur noch die passende UUID Setzen - hier homedir vom User holen, Pfad zum passendem Ordner zusammenbasten und über das \FilesModel die Richtige UUID aus der DB fischen. Eigentlich könntest du dir sogar den "createNewUser"-Hook komplett klemmen und beim FormularFeld-Hook den Order on the fly anlegen, wenn dieser noch nicht existiert. Alles klar?

  10. #10
    Contao-Fan Avatar von marcos
    Registriert seit
    09.02.2011.
    Ort
    Schweiz
    Beiträge
    575
    User beschenken
    Wunschliste

    Standard

    Hmm, naja theoretisch schon, praktisch geht so... ^^

    Ich hab's provisorisch mal so gelöst
    PHP-Code:
    $objHomeDir $this->Database->prepare('SELECT path FROM tl_files WHERE uuid=?')->execute($this->User->homeDir);
    rename($objHomeDir->path.'/'.$arrFiles['logoweb']['name'], $objHomeDir->path.'/logo_web/'.$arrFiles['logoweb']['name']); //Bild in logo_web verschieben 
    LG
    Marco

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •