Javascript 如何在laravel控制器中通过Cropper Js接收图像斑点数据

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

我正在使用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 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;