Laravel : 上传 base64 图片而不是普通图片

Laravel : Upload 64base image instead of normal

我有一个应用程序使用 ReactLaravel 上传图片。 我正在使用 Laravel Image Intervention package.

在测试我的 API 时,正常图像的上传工作完美。

使用 React,用户可以从他的电脑 select 图像并裁剪它,然后他看到预览是 生成的裁剪 64base图片.

我想将生成的 64base 图像而不是普通图像上传到我的数据库,如何操作?

Fileupload controller

 public function Store(Request $request)
    {
 $this->validate($request, [
 'filename' => 'image|required|mimes:jpeg,png,jpg,gif,svg'
 ]);
 $originalImage= $request->file('filename');
 $thumbnailImage = Image::make($originalImage);
 
 // Define upload path
 $originalPath = public_path('/images/');
 
 // Save Orginal Image
 $thumbnailImage->save($originalPath.time().$originalImage->getClientOriginalName());
 
 // Save In Database
 $imagemodel= new Photo();
 $imagemodel->photo_name=time().$originalImage->getClientOriginalName();
 $imagemodel->save();
 
 return back()->with('success', 'Image Upload successful');
 
    }

这个应该有用

$folderPath = "images/";

$image_parts = explode(";base64,", $request->file('file'));
$image_type_aux = explode("image/", $image_parts[0]);
$image_type = $image_type_aux[1];
$image_base64 = base64_decode($image_parts[1]);
$file = $folderPath . uniqid() . '. '.$image_type;

// file_put_contents($file, $image_base64);
Storage::put($file, $image_base64);

可能的选择:

$image =  Image::make(base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $request->file('file'))))->stream();
Storage::put($file, $image, 'public');