GrapesJS – Upload obrázků v presenteru (http request)

Dan Hundrt
Člen | 74
+
0
-

Zdravím,

používám knihovnu GrapesJS jako page content builder (v kostce pro skládání HTML bloků). Knihovna nabízí upload obrázků přes ajax (https://grapesjs.com/…/Assets.html#…), udělal jsem si endpoint, kam posílám data:

assetManager: {
  upload:  {plink //:Admin:ContentGenerator:upload id => $id},
  uploadName: 'files',
},

Ve Form Data poté vidím.

[url=https://ibb.co/BVDg7hJ][img]https://i.ibb.co/BVDg7hJ/form-data.png[/img][/url]

Bohužel nevím, kde v http requestu bych mohl najít zmíněné soubory.

Zkoušel jsem něco jako:

$files = $this->getHttpRequest()->getFiles();
foreach ($files as $file) {
    if ($file->isImage()) {
        // Logika ukladani
    }
}

Nicméně isImage() neexistuje.

Napadá někoho řešení?

Díky

Ondřej Kubíček
Člen | 494
+
0
-

a $files je prázdné?
zkus mrknout co ti vrátí getRawBody()

Dan Hundrt
Člen | 74
+
0
-

@OndřejKubíček Debugger::log($this->getHttpRequest()->getRawBody()); vraci:

`[2019–10–29 11–22–45] @ http://localhost:29599/…/2254/upload `

Dan Hundrt
Člen | 74
+
0
-

Tak neco takoveho:

foreach ($this->getRequest()->getFiles() as $img) {
    foreach ($img as $i) {
        if($i->isImage() && $i->isOk()) {
            $tmpImage = $i->getTemporaryFile();

            Image::fromFile($tmpImage)
                ->resize(900, 320, Image::EXACT)
                ->save(__DIR__ . "{$tmpImage}.jpg", 100, Image::JPEG);
        }
    }
}

Funguje.