Nikocevic Stefan
Nikocevic Stefan

Reputation: 31

Updating WYSIWYG summernote content breaks the images

I am using summernote WYSIWYG editor and I don't have any trouble creating or viewing its content but I do get broken images when updating the content. As in not just a broken link but an image with 0 bytes gets saved.

When I try to update it I get the undefined offset 1 error because of the explode function, but when I tried to fix it I get the broken image problem.

Here's my text editor content parser:

/*
     * @param $content is request data from wysiwyg
     * @param $directory is where to save the images
     */
    public function parseTextEditorContent($content, $directory)
    {
        $dom = new \domdocument();
        $dom->loadHtml($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
        $images = $dom->getelementsbytagname('img');

        //loop over img elements, decode their base64 src and save them to public folder,
        //and then replace base64 src with stored image URL.
        foreach($images as $k => $img){
            $data = $img->getattribute('src');

            list($type, $data) = explode(';', $data);
            list(, $data)      = explode(',', $data);

            $data = base64_decode($data);
            $image_name= time().$k.'.png';
            $path = public_path().'/img/'.$directory.'/'.$image_name;
            $src = '/img/'.$directory.'/'.$image_name;

            file_put_contents($path, $data);

            $img->removeattribute('src');
            $img->setattribute('src', $src);
        }

        $content = $dom->savehtml();
        return $content;
    }

Also here's an example of my content sa a base64 string.

<p>Porro esse ipsa, ali.</p><p><img src="data:image/jpeg;base64,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" data-filename="19598644_1899832350030685_6042892852142940235_n.jpg" style="width: 160px;"><br></p>

Upvotes: 1

Views: 804

Answers (2)

Balwinder Singh Sohi
Balwinder Singh Sohi

Reputation: 69

    $content=$Guide->input('MainContent');
    $dom = new \DomDocument('1.0', 'UTF-8');
    libxml_use_internal_errors(true);
    $dom->loadHtml($content);
    $images = $dom->getElementsByTagName('img');
    $bs64='base64';
    foreach ($images as $i => $img) {
            $data = $img->getAttribute('src');
            if (strpos($data,$bs64) == true)
             {
            $data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data));
            $image_name = '/images/userguide/'. time() . $i . '.png';
            $path = public_path() . $image_name;
            file_put_contents($path, $data);
            $img->removeAttribute('src');
            $img->setAttribute('src', $image_name);
            }
            else
            {
                $image_name=$data;
                $img->setAttribute('src', $image_name);
            }
          }

    $content_save= $dom->saveHTML();

Upvotes: 1

Muhammed Musthafa KP
Muhammed Musthafa KP

Reputation: 53

You can check the image is base 64 or not ,inside the loop then update only if the image is Base64

 $editor_content=$request->editor_content;
$dom = new \DomDocument('1.0', 'UTF-8');
libxml_use_internal_errors(true);
$dom->loadHtml($editor_content);
$images = $dom->getElementsByTagName('img');
$bs64='base64';//variable to check the image is base64 or not
foreach ($images as $k => $img) {
        $data = $img->getAttribute('src');
        if (strpos($data,$bs64) == true)//if the Image is base 64
         {
        $data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data));
        $image_name = "/storage/blog/". 'post_' . time() . $k . '.png';
        $path = public_path() . $image_name;
        file_put_contents($path, $data);
        $img->removeAttribute('src');
        $img->setAttribute('src', $image_name);
        }
        else//put '/' to prevent lossing image  actual path
        {
            $image_name="/".$data;
            $img->setAttribute('src', $image_name);
        }
      };
 
$editor_content_save= $dom->saveHTML();
// return $editor_content_save;
$slug = Str::slug($request->title,'-');
$blog = Blog::where('id', $request->blog_id)->first();
$blog->title = $request->title;
$blog->author = $request->author;
$blog->tags=collect($request->tags)->implode(',');
$blog->content = $editor_content_save;
$blog->slug = $slug;
$blog->date = $request->date;
$blog->save();

Upvotes: 2

Related Questions