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
Ä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.
$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.
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
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.
Was heisst hier der Pfad ist falsch? Die Bilder befinden sich in fileadmin/images/. Es funktioniert ja auch wie im Eingangspost beschrieben.
-Gsicht
ja aber kopien der bilder werden wo anders abgelegt, deswegen ist der pfad falsch, glaubs mir oder auch nicht
georg
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
ja wenns deine ext ist, sind die bilder wohl in uploads/tx_deineext/
georg
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
typo3 kopiert das dorthin
georg
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