Zum Inhalt springen

Index im Dateiname

Erstellt am 10. Oktober 2007 · 11 Antworten · letzte Antwort am 11. Oktober 2007

Tags: TCA, Datei-Upload, Frage

Gsicht ·

Hallo,

ich habe eine kleine Extension geschieben, bei der man im Backend Datensätze einfügen kann, welche dann im Frontend dargestellt werden. Eines der Felder eines Datensatzes ist ein Bild. Wenn man nun ein Bild in einen Datensatz einfügt, den Rest ausfüllt und dann speichert, funktioniert alles korrekt. Wenn man dann jedoch diesen Eintrag editiert, das Bild herausnimmt und dann das selbe Bild wieder einfügt, dann heisst das Bild nicht mehr whatever.jpg, sondern whatever_01.jpg. Wenn man dann speichert, wird das Bild natürlich nicht mehr gefunden. Wiederholt man diesen Vorgang, dann heisst das Bild nachher whatever_02.jpg, etc.

Wie kriege ich diesen Index weg?

Danke im Voraus 🙂

-Gsicht

laser ·

Ährm, Gegenfrage: Wie liest du das Bild aus?

Bei mir ist es so, er speichert den Dateiname immer in der DB. Ich hab dann kein Problem mit Datei-Umbenennung, weil er eh immer den Dateiname (besonders wenn du im BE was änderst) aktuell hält.

Gsicht ·
$path = 'fileadmin/images/'.$data['img'];

$imgTSconfig = $this->conf['thumbnail.'];
$imgTSconfig['file'] = $path;
$imgTSconfig['file.']['width'] = 240;
$image = $this->cObj->IMAGE($imgTSconfig);

In der DB ist aber nicht einfach der Pfad zum Bild gespeichert (als string), sondern das Feld ist ein BLOB.

just2b ·

der pfad ist falsch, der sollte uploads/pics/ sein oder wo sich das bild auch wirklich befindet

das mit dem index ist schon richtig so

georg

laser ·

Bei mir ist es auch ein BLOB. Wie Georg aber auch schon sagt ist der Pfad falsch.

Das updaten im FE mach ich so:

// Bild empfangen ...
        if($_FILES['tx_mh_branchenbuch']['name']) {
          require_once (PATH_t3lib .'class.t3lib_basicfilefunc.php');
          
          $this->fileFunc = t3lib_div::makeInstance("t3lib_basicFileFunctions");
          $sauber = $this->fileFunc->cleanFileName($_FILES['tx_mh_branchenbuch']['name']);
          $unique = $this->fileFunc->getUniqueName($sauber, "uploads/tx_mhbranchenbuch/");
          
          // Bildgroeße abchecken ...
          $fileInfo = $this->fileFunc->getTotalFileInfo($_FILES['tx_mh_branchenbuch']['tmp_name']);

          if(($fileInfo['size']/1024) <= $this->feForm_maxsize) {
            move_uploaded_file($_FILES['tx_mh_branchenbuch']['tmp_name'],$unique);
            $temp_unique  = explode('/',$unique);    
            $uploadName   = $temp_unique[2];
          }
        }

Im BE packt der dir automatisch dann den aktuellen Dateinamen, nicht den Pfad, in die DB.

Gsicht ·

Was heisst hier der Pfad ist falsch? Die Bilder befinden sich in fileadmin/images/. Es funktioniert ja auch wie im Eingangspost beschrieben.

-Gsicht

just2b ·

ja aber kopien der bilder werden wo anders abgelegt, deswegen ist der pfad falsch, glaubs mir oder auch nicht

georg

Gsicht ·
just2b schrieb

ja aber kopien der bilder werden wo anders abgelegt, deswegen ist der pfad falsch, glaubs mir oder auch nicht

georg

Das hat nichts mit Glauben zu tun. Die Bilder sind nicht da, der Ordner uploads/pics existiert nicht. Zum Spass habe ich den Pfad trotzdem mal auf uploads/pics/ angepasst. Wie erwartet wird kein einziges Bild angezeigt.

-Gsicht

Gsicht ·

Dorthin kann ich aber im Backend keine Bilder hochladen. Oder verfrachtet TYPO3 die Bilder, die in meiner Ext nach fileadmin/images hochgeladen wurden, in diesen Ordner? Da sind zwr alle alten Bilder drin im Moment, aber wenn cih einen neuen Datensatz erstelle, wird das Bild nicht gefunden (jetzt mit uploads/tx_meineext/)

Danke für die Hilfe 🙂

-Gsicht

Gsicht ·

Sehr interessant, jetzt funktioniert es. Ich habe es erst mit einem PNG versucht, da wurde das Bild zwar von TYPO3 in den upload-Ordner der Ext kopiert (auch mit dem Index, falls nötig), aber das Bild wurde im Frontend nicht angezeigt. Mit GIF und JPG funktioniert es korrekt.

Nochmals besten Dank.

-Gsicht