首页 > 解决方案 > Laravel 上传图片库 64

问题描述

我有一个 api 发送给我一个 form-data base-64 图像字符串我找到了这个代码

public function image(Request $request){
    $request = json_decode($request->getContent());
    $image = $request->image;  // your base64 encoded
    $image = str_replace('data:image/png;base64,', '', $image);
    $image = str_replace(' ', '+', $image);
    $imageName = str_random(10).'.'.'png';
    \File::put(base_path(). '\public\users\\' . $imageName, base64_decode($image));
}

我工作正常,但所有图像都有错误并且无法打开。

标签: phplaravel

解决方案


使用此代码保存图像 $imageData 将是您请求的图像 $request->image

$imgdata = base64_decode($imageData);
$f = finfo_open();
$mime_type = "." . explode("/", finfo_buffer($f, $imgdata, FILEINFO_MIME_TYPE))[1];
$img = $imageData;
$image_parts = explode(";base64,", $img);
$image_type_aux = explode("image/", $image_parts[0]);
$image_type = $image_type_aux[1];
$image_base64 = base64_decode($image_parts[1]);
$file = public_path() . '/uploads/' . $folder_name . $img_perfix . $id . "." . $image_type;
file_put_contents($file, $image_base64);
if (!empty($file)) {
$profile = $table_name::find($id);
$profile->image = $img_perfix . $id . "." . $image_type;
}

推荐阅读