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

Dan Hundrt
Člen | 75
+
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 | 75
+
0
-

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

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

Dan Hundrt
Člen | 75
+
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.