直接用正则替换 base64 图片的编码头即可
public function update(Request $request) {
$coverImg = $request->get('cover_img');
preg_match('/^(data:\s*image\/(\w+);base64,)/', $coverImg, $res);
$coverImg = base64_decode(str_replace($res[1], '', $coverImg));
$imagePath = str_random(10) . uniqid() . '.png'; // 生成图片名
Storage::disk('uploads')->put($imagePath, $coverImg); // 保存图片
return env('APP_URL') . '/uploads/' . $imagePath; // 拼接完成路径
}
有几个点要注意:
1.上面代码中的 Storage::disk('uploads')
是我在 config/filesystems.php
文件中定义的,如果直接把代码复制过去执行是不行的
config/filesystems.php
'disks' => [
...
// 新建一个本地端uploads空间(目录) 用于存储上传的文件
'uploads' => [
'driver' => 'local',
// 文件将上传到public/uploads目录 如果需要浏览器直接访问 请设置成这个
'root' => public_path('uploads'),
]
...
],
2.部署到生产环境后需要给权限 否则无法保存图片
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。