Php 如何在上载时从公用文件夹中删除旧图像-使用laravel
我的公用文件夹配置文件\u images中有一个文件夹,存储了我的图像。上载新图像时,我想从该文件夹中删除旧图像 这是我的整个控制器代码: 如何在上传时删除旧文件 我们将非常感谢你的帮助Php 如何在上载时从公用文件夹中删除旧图像-使用laravel,php,laravel,image,file,delete-file,Php,Laravel,Image,File,Delete File,我的公用文件夹配置文件\u images中有一个文件夹,存储了我的图像。上载新图像时,我想从该文件夹中删除旧图像 这是我的整个控制器代码: 如何在上传时删除旧文件 我们将非常感谢你的帮助 public function uploadImage(Request $request) { $user_id = $request->input('user_id'); $image = $request->input('image');
public function uploadImage(Request $request)
{
$user_id = $request->input('user_id');
$image = $request->input('image');
$r = [
'user_id' => $user_id,
];
$validator = Validator::make($r, [
'user_id' => 'required|exists:users,id',
]);
if($validator->fails()) {
return response(['status' => false, 'message' => 'Validation Errors', 'errors' => $validator->errors()->all()], 500);
}
if ($validator->fails()) {
return response([
'status' => false,
'message' => __('messages.validation_errors'),
'errors' => $validator->errors()->all()], 200);
}
try {
$path = public_path('profile_images');
@mkdir($path, '0777', true);
$image = base64_decode($image);
$imageName = str_random(10).'.'.'png';
Storage::disk('profile-image')->put($imageName, $image);
$path = asset('public/profile_images/' . $imageName);
$this->userBasicInfo->where('user_id', $user_id)->update(['profile_pic' => $path]);
return response(['status' => true, 'message' => 'Image Uploaded successfully', 'data' => ['profile_image' => $path]], 200);
} catch (\Exception $ex) {
return response(['status' => false, 'message' => $ex->getMessage()], 500);
}
}
Laravel有删除文件的方法:
Storage::delete('profile-image/old_file.jpg');
此外,您应该记住旧文件名,以便将来删除:
$imageName=str_random(10)。'png';
将此imageName保存在某个位置,或使用您的用户id了解要删除的图像。删除公用目录中任何文件的默认方法
File::delete(public_path('file path and name'));
我想看一看
取消链接
,但不确定这是否正是您要查找的内容。我还尝试使用“取消链接但不起作用”它说“取消链接()”:http不允许取消链接任何其他更好的解决方案如果要使用取消链接
删除某些内容,您需要使用文件路径。因此,请确保您使用的路径类似于public/profile\u images/whatevertheimageis.png
。我将手动添加文件名?如您所说('profile-image/78777.jpg)?如果您想保存用户配置文件映像,您只需使用此用户的id保存此映像即可。