Ошибка загрузки изображения Summernote при редактировании добавленной записи |Ларавел 5.7 - PullRequest
0 голосов
/ 05 февраля 2019

Я написал контроллер для добавления и редактирования сообщений в базе данных.Нет ничего плохого в добавлении нового поста.Произошла ошибка при редактировании вставленного сообщения.Вот мой контроллер.

    $sub->smenu_description_uz = $inputs['smenu_description_uz']; 
    $dom = new \DomDocument();
    libxml_use_internal_errors(true);
    $dom->loadHtml($sub->smenu_description_uz, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);    
    $images = $dom->getElementsByTagName('img');

    foreach($images as $k => $img){
        $data = $img->getAttribute('src');
        //The error is exactly the same as two lines of code.
        //That is, if the post is edited, older uploaded photos will be re-encoded.
        list($type, $data) = explode(';', $data);
        list(, $data)      = explode(',', $data);
        $data = base64_decode($data);
        $image_name= "/upload/sbs/" . time().$k.'.png';
        $path = public_path() . $image_name;
        file_put_contents($path, $data);
        $img->removeAttribute('src');
        $img->setAttribute('src', $image_name);
    }
    $sub->smenu_description_uz = $dom->saveHTML();

    $sub->save();

В настоящее время я использую Larawel 5.7 и HTMLDom.При добавлении данных нет ошибок, но эта ошибка возникает после редактирования поста.Я ожидаю ошибку вывода: неопределенное смещение: 1

ОБНОВЛЕНО Я решил эту проблему с помощью этого кода и , если переменная.

    foreach($images as $k => $img){
        $data = $img->getAttribute('src');
        if(preg_match('/data:image/', $data)) 
        {
        list($type, $data) = explode(';', $data);
        list(, $data)      = explode(',', $data);
        $data = base64_decode($data);
        $image_name= "/upload/sbs/" . $sub->smenu_url.'_'.$k.'.png';
        $path = public_path() . $image_name;
        file_put_contents($path, $data);
        $img->removeAttribute('src');
        $img->setAttribute('src', $image_name);
    }
   }
...