Zielordner für sw-media-upload-v2 / Media Upload V2 bzw. Thumbnail Generierung

Moin Zusammen,

gibt es irgendwo ein gutes Beispiel dafür, wie man die Komponente dazu bewegen kann, beim Hochladen eines Bildes einen bestimmten Ordner (also einen virtuellen aus der Media-Library, wie z.B. den User-Ordner oder Theme) zu wählen?

Hintergrund ist, dass ansonsten in den „Root“ hochgeladen wird, und dabei scheinbar keine Thumnails generiert werden, was eher suboptimal ist. Oder werden die dann auch nicht generiert und ich ziehe hier die falschen Schlüsse?

Anders gefragt: Wie kann ich mit dieser Komponenete Bilder hochladen, so dass Thumbnails generiert werden ? :wink:

Aus dem Quellcode bin ich bisher einfach nicht schlau geworden :frowning:

Besten Dank,
devnullroot

Schau doch mal hier:

https://forum.shopware.com/discussion/61982/produkt-bilder-ueber-api-hochladen/p1

Der Upload von Bildern benötigt zwei Posts. Beim ersten Post gibst Du als Payload die mediaFolderId mit und mit dem zweiten Post die Bilddaten. Klappt bei mir so wunderbar.

Grüße

1 „Gefällt mir“

Moin @lhairman‍,

besten Dank für die Antwort! Allerdings hätte ich meine Frage exakter stellen sollen: Ich habe ein Custom Entity welches beim Erstellen/Editieren in der Administration Bilder zugewiesen bekommt, nicht über die API. In der entsprechenden „custom-entity-detail.html.twig“ gibt es dafür ein Element.

Einmal drüber schlafen hat mich nun zu der (wie so oft) sehr einfachen Lösung gebracht: Ich muss einfach nur „:defaultFolder“ auf z.B. „user“ oder eben „cms_page“ setzen, dem „entity“ Feld der „media_default_folder“ Tabelle. Damit wird der Upload-Folder vordefiniert. Oder man legt gleich einen eigenen Default-Ordner Datenbankeintrag in der media_default_folder Tabelle an:

$repository = $this->container->get('media_default_folder.repository');
$fieldSet = [
    'id' => Uuid::randomHex(),
    'associationFields' => [],
    'entity' => 'custom _entity',
    'createdAt' => (new DateTime())->format(Defaults::STORAGE_DATE_TIME_FORMAT)
];
$repository->upsert([$fieldSet], $installContext->getContext());

und setzt im Element „:defaultFolder“ auf „custom_entity“. Dann noch einen neuen Ordner für Medien erstellen, den Standardspeicherort setzen und „schon“ hat man einen eigenen Default-Ordner.

Jetzt fehlt nur noch ein sprechenden Name im Select-Feld des Medien-Ordners. Bislang steht da nur „global.entities.custum_entity Medien“. Falls da einer was weiß, freu ich mich :slight_smile:

Besten Grüße,
devnullroot