@section('content') | |
{{Form::open('PostController@edit')}} | |
<input type="hidden" name="post_id" value="1"> | |
<legend>Message</legend> | |
<textarea id="editor" name="message"></textarea> | |
<button type="submit">Save</button> | |
{{Form::close()}} | |
@stop | |
@section('scripts') | |
$('#editor').summernote(); | |
@stop |
<?php | |
/** | |
* This exemple shows how to parse base64 encoded images (submitted using Summernote), save them locally | |
* and replace the 'src' attribute in the submited HTML content | |
* | |
**/ | |
use Intervention\Image\ImageManagerStatic as Image; | |
class PostController { | |
public function edit(){ | |
$post = Post::findOrFail(Input::get('post_id')); // Post object exemple | |
$message = Input::get('message'); // Summernote input field | |
$dom = new DomDocument(); | |
$dom->loadHtml($message, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); | |
$images = $dom->getElementsByTagName('img'); | |
// foreach <img> in the submited message | |
foreach($images as $img){ | |
$src = $img->getAttribute('src'); | |
// if the img source is 'data-url' | |
if(preg_match('/data:image/', $src)){ | |
// get the mimetype | |
preg_match('/data:image\/(?<mime>.*?)\;/', $src, $groups); | |
$mimetype = $groups['mime']; | |
// Generating a random filename | |
$filename = uniqid(); | |
$filepath = "/images/$filename.$mimetype"; | |
// @see http://image.intervention.io/api/ | |
$image = Image::make($src) | |
// resize if required | |
/* ->resize(300, 200) */ | |
->encode($mimetype, 100) // encode file to the specified mimetype | |
->save(public_path($filepath)); | |
$new_src = asset($filepath); | |
$img->removeAttribute('src'); | |
$img->setAttribute('src', $new_src); | |
} // <!--endif | |
} // <!--endforeach | |
$post->message = $dom->saveHTML(); | |
$post->save(); | |
Session::flash('message','Post updated!'); | |
return Redirect::back(); | |
} | |
} |
How to fix the UTF Encoding? I have some ü,ä and ö in my content.. How do i sort them out to display them correctly?
Nice!!..
Little fix. On line 34
$filepath = "/images/$filename . '.' . $mimetype";
To fix UTF enconding:
Line 15
$dom->loadHtml( mb_convert_encoding($message, 'HTML-ENTITIES', "UTF-8"), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
hmm how about when i delete the article? or when i edit the article and remove some image from there? how to remove that image? from image folder?
This works good with me.
$message=$request->input('art_description');
$dom = new DomDocument();
$dom->loadHtml($message, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$images = $dom->getElementsByTagName('img');
// foreach in the submited message
foreach($images as $img){
$src = $img->getAttribute('src');
// if the img source is 'data-url'
if(preg_match('/data:image/', $src)){
// get the mimetype
preg_match('/data:image\/(?<mime>.*?)\;/', $src, $groups);
$mimetype = $groups['mime'];
// Generating a random filename
$filename = uniqid();
$filepath = "website/images/$filename.$mimetype";
// @see http://image.intervention.io/api/
$image = \Intervention\Image\Facades\Image::make($src)
// resize if required
/* ->resize(300, 200) */
->encode($mimetype, 100) // encode file to the specified mimetype
->save(public_path($filepath));
$new_src = asset($filepath);
$img->removeAttribute('src');
$img->setAttribute('src', $new_src);
} // <!--endif
} // <!-
$exhib->art_description = $dom->saveHTML();
It will be save image in base64 mode ,,,, but i have a solution to save image with a hyperlink of your image ,,,, i think u will get full solution with this link
http://www.somrat.info/summarnote-image-upload-with-laravel/
Best and secure option :- http://laravel.usercv.com/post/21/implementing-summernote-wysiwyg-editor-in-laravel-with-image-upload
Thank you for this.
Hello, Is it ok to upload multiple big images at the same time? Have you tested that?