Javascript 如何在laravel控制器中通过Cropper Js接收图像斑点数据
我正在使用cropper js和laravel,我裁剪了图像并将其放入formdata中,然后通过Jquery Ajax将其发送到laravel控制器。 问题在于我没有在控制器中获取数据。但只会得到一个错误。 代码如下: HTML 拉威尔控制器Javascript 如何在laravel控制器中通过Cropper Js接收图像斑点数据,javascript,php,jquery,laravel,cropperjs,Javascript,Php,Jquery,Laravel,Cropperjs,我正在使用cropper js和laravel,我裁剪了图像并将其放入formdata中,然后通过Jquery Ajax将其发送到laravel控制器。 问题在于我没有在控制器中获取数据。但只会得到一个错误。 代码如下: HTML 拉威尔控制器 public function save(Request $request){ $data = $request->croppedImage; var_dump($data); //Here I want to get image a
public function save(Request $request){
$data = $request->croppedImage;
var_dump($data);
//Here I want to get image and upload it on the system
//But I cant Understand How
}
错误
警告:未知:输入变量超过1000。要增加限制,请更改php.ini中的max_input_vars。在第0行的未知位置
请指导我,如何以正确的方式做到这一点。
提前谢谢。
关于,您需要使用blob数据创建一个新图像并保存该图像 首先,您需要获取图像的实际内容,即后面的内容:
data:image/png;base64,
或数据:图像/jpeg;base64,
(可以使用blob的第一部分获取扩展类型,以便以后使用相同的扩展保存图像。)
这将做到:
$base64Str = substr($data, strpos($data, ",")+1);
接下来,您需要解码base64中的内容
$file = base64_decode($base64Str);
然后,指定保存新图像的路径。您可以将随机生成器与当前时间戳结合使用,以获得每个文件的唯一名称
public function generateUniqueFileName($extension)
{
return md5(uniqid(rand(), true)) . '-' . md5(microtime()) . '.' $extension;
}
$fullPath = 'public/images/' . $this->generateUniqueFileName($extension);
最后,您可以将图像存储到指定的路径:
Storage::put($fullPath, $file);
您也可以尝试这样做,因为来自AJAX的url是post请求,请转到app/Http/Middleware/VerifyCsrfToken.php并执行此操作
protected $except = [
'crop/save'
];
然后在控制器中,您可以像这样保存图像
public function fileUpload(Request $request){
$file = $request->file('croppedImage');
if($file) {
$file->move(public_path() .'/images', $filename);
}
}
或
public function fileUpload(Request $request){
$file = $request->file('croppedImage');
if($file) {
Storage::disk('local')->put($filename, File::get($file));
}
}
如果使用第二种方法,请不要忘记在控制器的顶部执行此操作
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
$filename变量是您选择用来保存文件的名称
protected $except = [
'crop/save'
];
public function fileUpload(Request $request){
$file = $request->file('croppedImage');
if($file) {
$file->move(public_path() .'/images', $filename);
}
}
public function fileUpload(Request $request){
$file = $request->file('croppedImage');
if($file) {
Storage::disk('local')->put($filename, File::get($file));
}
}
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;