Я следую этому руководству ниже, и все работает, но только так.
http://www.phpzone.in/laravel-crop-and-upload-an-image-with-jquery-croppie-plugin-using-ajax/
В моем контроллере магазина я загружаю изображение, где используется как баннер, одно вложение (zip) и несколько текстовых полей ... Теперь я пытаюсь загрузить "эскиз", но с помощью cropp ie вырезать изображение!
Как я это делаю контроллер:
$image_file = $request->image;
list($type, $image_file) = explode(';', $image_file);
list(, $image_file) = explode(',', $image_file);
$image_file = base64_decode($image_file);
$image_name= $lastpost->slug.'.png';
$path = public_path('uploads/posts/banner/thumb-'.$image_name);
file_put_contents($path, $image_file);
return response()->json(['status'=>true]);
Работайте с этим:
public function store(Request $request)
{
...
$featured = $request->featured;
$featuerd_new = $featured->getClientoriginalName();
$featuredPath = '/uploads/posts/banner/' . $request->title . '/';
$featured->move(public_path($featuredPath), $featuerd_new);
$thumbnailpic = 'thumb' . '-' . $featuerd_new;
...
$post = Post::create([ ... ]);
...
return redirect()->back();
}
вот мой скрипт
<script type="text/javascript">
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var resize = $('#upload-demo').croppie({
enableExif: true,
enableOrientation: true,
viewport: { // Default { width: 100, height: 100, type: 'square' }
width: 400,
height: 300,
type: 'square' //square
},
boundary: {
width: 400,
height: 300
}
});
$('#image_file').on('change', function () {
var reader = new FileReader();
reader.onload = function (e) {
resize.croppie('bind',{
url: e.target.result
}).then(function(){
console.log('jQuery bind complete');
});
}
reader.readAsDataURL(this.files[0]);
});
$('.upload-image').on('click', function (ev) {
resize.croppie('result', {
type: 'canvas',
size: 'viewport'
}).then(function (img) {
html = '<img src="' + img + '" />';
$("#preview-crop-image").html(html);
$("#upload-success").html("Images cropped and uploaded successfully.");
$("#upload-success").show();
$.ajax({
url: "{{route('croppie.upload-image')}}",
type: "POST",
//data: {"image":img},
success: function (data) {
}
});
});
});
</script>
Я уже много чего пробую на контроллере магазина, но файл всегда ломался.
Заранее спасибо за помощь