laravel - 上传新照片后如何删除旧照片
问题描述
我的控制器中有这个处理图像上传
public function updateProfileImage(Request $request)
{
$user = auth('api')->user();
$image = $request->input('image'); // image base64 encoded
preg_match("/data:image\/(.*?);/",$image,$image_extension); // extract the image extension
$image = preg_replace('/data:image\/(.*?);base64,/','',$image); // remove the type part
$image = str_replace(' ', '+', $image);
$imageName = 'profile' . time() . '.' . $image_extension[1];
Storage::disk('public')->put($imageName,base64_decode($image));
$user->update($request->except('image') + [
'profilePicture' => $imageName
]);
return [
//'Message' => "Success",
'profilePhoto' => $user['profilePicture']
];
}
上传新图片后如何从目录中删除旧图片。
解决方案
Storage::delete()
您可以使用方法(https://laravel.com/docs/7.x/filesystem#deleting-files )删除图像。因此,在更新之前获取图像,然后在可以执行时删除:
$oldImage = $user->profilePicture;
Storage::disk('public')->put($imageName,base64_decode($image));
$user->update($request->except('image') + [
'profilePicture' => $imageName
]);
Storage::disk('public')->delete($oldImage);
return [
//'Message' => "Success",
'profilePhoto' => $user['profilePicture']
];
PS:我不确定该profilePicture
属性是否与您的存储相同。无论如何,如果需要,请进行任何调整以匹配。
推荐阅读
- css - 使用 React 时右对齐表格单元格
- python - 将来自 SQL 的列表与从 API 中提取的列表进行比较
- sql - 如何提取日期并使用 +/- 30 天来检查参数
- openstack - openstack网络设置物理网络
- java - Pendingintent 打开文件未在 android Oreo 中显示正确的文件
- c++ - 键相等时 std::multimap 的自定义比较函数
- acumatica - 是否可以中断模板插入的数据?
- javascript - SweetAlert2:意外的 html 类型!预期的“字符串”,得到对象
- corda - 启动corda节点时出现空指针异常
- node.js - request.body 在节点发布请求中未定义