【问题标题】:How do I remove my image from images folder in laravel?如何从 laravel 的图像文件夹中删除我的图像?
【发布时间】:2019-09-05 08:12:33
【问题描述】:

在我的编辑详细信息页面中有一个图片字段,我希望当我上传新图片时,旧照片将从图片文件夹中删除,新照片将上传,如果我不上传图片,则在提交期间不会产生错误

这是我的图片上传代码

$file = $request->file('file');
$name = time() . $file->getClientOriginalName();
$file->move('uploads/images', $name);
$employee->file = $name;
$employee->save();

如何取消链接?

【问题讨论】:

  • @unlink( $_SERVER[ 'DOCUMENT_ROOT' ].'uploads/images'.( $employee->file ) );

标签: php laravel image unlink


【解决方案1】:

如果您正在更新模型,您可以删除旧文件并上传新文件(如果提供):

if ($request->hasFile('file')) {
    Storage::delete($employee->file); // If $file is path to old image

    $employee->file = $request->file('file')->store('name-of-folder');
}

【讨论】:

  • 检查文件是否存在然后将其删除是一个好习惯:Storage::exists($employee->file)
  • 我收到此错误不应静态调用非静态方法 Illuminate\Database\Eloquent\Model::delete()
  • @John_rees 因为你没有在模型上调用delete()方法,你在Storage门面调用它:laravel.com/docs/5.8/filesystem#deleting-files
  • @RouhollahMazarei Storage::delete() 检查文件是否存在,如果不存在则返回 false,因此您可以安全地使用它。
【解决方案2】:

我们可以在 php 中使用unlink

但是如果你想用 Laravel 的方式来做,请改用 File::delete() 方法。

// 删除单个文件

use File;
File::delete($filename);

//删除多个文件

File::delete($file1, $file2, $file3);

// 删除文件数组

$files = array($file1, $file2);
File::delete($files);

注意:$filename 包含完整路径和图像名称,例如 ['https://www.example.com/images/image.jpg']

【讨论】:

    【解决方案3】:

    如果此代码存在,您可以使用 unlink 删除以前的图像文件:

    if($request->hasFile('file')){
        if(file_exists(public_path("your image url"))){
            unlink(public_path("your image url"));
        };
        UploadImage($request)
    }
    
    

    和 UploadImage() 定义为:

    private function UploadImage($request){
        $file = $request->file('file');
        $name = time() . $file->getClientOriginalName();
        $file->move('uploads/images', $name);
        $employee->file = $name;
        $employee->save();
    }
    

    【讨论】:

    • 您的答案有效,但如果该图像已存在于数据库中,它将取消链接,我希望在添加员工期间,我上传的图像将替换该图像。\
    • 现在可以试一试,如果有图片先解绑再上传。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多