Upload für Backend Formular

  • Hallo,

    vielleicht kann mir jemand einen Tipp geben: Ich habe im Backend ein Upload-Form-Feld in einer eigenen Komponente. Nun möchte ich die Datei lesen und speichern. Dazu habe ich im Model die Funktion "public function save($data) {}" eingebaut. Der Upload kommt auch in in $data an, nur eben als String – wo aber ist die Datei?


    Code
    public function save($data) {
            
            $item = (object)$data;
            print_r($item->fileUpload);
            exit;

    Bin über jeden Tipp dankbar.


    Mirko

  • Ich denke, um diesem Fehler auf den Grund gehen zu können ist etwas mehr einsicht in dein Code notwendig.
    Wichtig ist z.B auch der Code, wo du deine Funktion save() aufrufst. Wenn du dort einen String als Argument übergibst, dann wird auch ein String in der Funktion ankommen...


    Eventuell nützlich: https://docs.joomla.org/How_to_debug_your_code

    JoomGallery::friends ist aktuell noch auf der Suche nach Helfern für die JoomGallery 4 Entwicklung!

    Gesucht sind Leute für die PHP-Entwicklung, zum Testen, Übersetzen und Dokumentieren.

    Bei Interesse melde dich per PM oder Mail bei mir (Elfangor93).

  • Vorausgesetzt, du verwendest ein Joomla file-Feld (https://docs.joomla.org/File_form_field_type) in der Art wie das Code-Beispiel dort.


    Das ist auswendig getippt. Aber mindestens die Richtung. Du musst die files-Eigenschaft des formulars abfragen. Irgendsowas:

    Code
    $input = JFactory::getApplication()->input;
    $fileInfos = $input->files->get('myfilevalue', null);
    ...
    JFile::upload($fileInfos['tmp_name'], $zielPfad);

    JFile bzw. File-Klasse musst vorher verfügbar gemacht haben.

    Und das Formular braucht ein

    Code
    enctype="multipart/form-data"
  • Hallo und Danke,

    hat soweit funktioniert das ich zumindest an die Daten ran komme:

    PHP
    $app = JFactory::getApplication();
            $input = $app->input->files;
            $file = $input->get('jform');
            $folder = '/Users/chairlines20/Documents/Joomla/Grundinstallation/images/csv/imports/';
            
            JFile::upload($file['tmp_name'], $folder);


    Allerdings wird die Datei zum Zielverzeichnis verschoben/gespeichert. Kann es sein das dies aber daran liegt, das ich Lokal arbeite?


    Mirko

  • $folder bzw. $zielPfad nennt man wohl besser $destinationFile bzw. $destFile. Es muss der absolute Serverpfad inklusive dem Dateinamen sein. Man könnte die Datei also auch noch umbenennen beim Speichern.


    Ein fehlender Ordner wird übrigens erzeugt, sehe ich gerade.


    EDIT: Und ob das upload() auch außerhalb Joomlas speichern darf, weiß ich nicht gewiss.