【发布时间】:2019-12-07 00:59:36
【问题描述】:
我在我的网络上使用summernote 作为所见即所得,但我遇到了一个我在google 中找不到的问题(不能解决我的问题),即如何使用summernote 在我的文本区域中输入图像并将它们显示在查看我使用了以下各种方法但仍然出现错误,我希望我能在这个惊人的StackOverflow中得到答案。
我先尝试了这段代码:
$detail=$request->input('konten');
$dom = new \DomDocument();
libxml_use_internal_errors(true);
$dom->loadHtml($detail, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$images = $dom->getElementsByTagName('img');
foreach($images as $k => $img){
$data = $img->getAttribute('src');
list($type, $data) = explode(';', $data);
list(, $data) = explode(',', $data);
$data = base64_decode($data);
$image_name= "/img/blog" . time().$k. '.png';
$path = public_path() . $image_name;
file_put_contents($path, $data);
$img->removeAttribute('src');
$img->setAttribute('src', $image_name);
}
$detail = $dom->saveHTML();
我将它保存到数据库,这项工作总体上没有错误,但问题是,在我的 laravel 目录中,“laravel-5”环境不是默认环境,我为“laravel”和那个文件夹设置了文件夹名称“main” "main" 成为一个公共目录,问题是,$path = "public_path().$image_name" 没有上传到公共名称 "img/blog" 上的正确目录,而是在 MAIN 文件夹上创建一个新目录,所以当我在视图上显示由于目录错误导致图像未显示时,img src 上的结果是 img/blog/namefile.png,必须是 https://somedomain.com/img/blog/namefile.png 才能显示图像。
我尝试了一些库名称Intervention\Image\ImageManagerStatic
这是代码:
$detail=$request->input('konten');
$dom = new \DomDocument();
$dom->loadHtml( mb_convert_encoding($detail, 'HTML-ENTITIES', "UTF-8"), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$images = $dom->getElementsByTagName('img');
foreach($images as $img){
$src = $img->getAttribute('src');
if(preg_match('/data:image/', $src)){
// get the mimetype
preg_match('/data:image\/(?<mime>.*?)\;/', $src, $groups);
$mimetype = $groups['mime'];
$filename = uniqid();
$filepath = "/img/blog/$filename.$mimetype";
$image = Image::make($src)
->encode($mimetype, 50)
->save($filepath);
$new_src = asset($filepath);
$img->removeAttribute('src');
$img->setAttribute('src', $new_src);
}
}
$detail = $dom->saveHTML();
但是结果是图片无法写入目录,不知道为什么,我试过第一个删除public_path()改成URL,还是一样的错误。
//first trial
$detail=$request->input('konten');
$dom = new \DomDocument();
libxml_use_internal_errors(true);
$dom->loadHtml($detail, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$images = $dom->getElementsByTagName('img');
foreach($images as $k => $img){
$data = $img->getAttribute('src');
list($type, $data) = explode(';', $data);
list(, $data) = explode(',', $data);
$data = base64_decode($data);
$image_name= "/img/blog" . time().$k. '.png';
$path = public_path() . $image_name;
file_put_contents($path, $data);
$img->removeAttribute('src');
$img->setAttribute('src', $image_name);
}
$detail = $dom->saveHTML();
//second trial
$detail=$request->input('konten');
$dom = new \DomDocument();
$dom->loadHtml( mb_convert_encoding($detail, 'HTML-ENTITIES', "UTF-8"), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$images = $dom->getElementsByTagName('img');
foreach($images as $img){
$src = $img->getAttribute('src');
if(preg_match('/data:image/', $src)){
// get the mimetype
preg_match('/data:image\/(?<mime>.*?)\;/', $src, $groups);
$mimetype = $groups['mime'];
$filename = uniqid();
$filepath = "/img/blog/$filename.$mimetype";
$image = Image::make($src)
->encode($mimetype, 50)
->save($filepath);
$new_src = asset($filepath);
$img->removeAttribute('src');
$img->setAttribute('src', $new_src);
}
}
$detail = $dom->saveHTML();
我希望图片上传到正确的目录并且可以显示在视图中
【问题讨论】:
标签: php laravel laravel-5 summernote