上传后,我想删除用户照片



我正在从事一个项目,我想每次上传另一件事上的个人资料上的上一张照片。

我编写了代码,但没有删除旧文件。我将旧照片存储在$ oldfilename中,并在更新照片后,我尝试将其删除使用Storage :: DELETE($ OLDFILENAME(;

homecontroller.php:

public function update(User $user)
{
    $user = auth()->user();
    $user->name = request('name');
    $user->phone = request('phone');
    $user->image = request('image');
    $oldFilename = $user->image;
    $this->storeImage($user);
    Storage::delete($oldFilename);
    $user->save();
    return redirect('user/account');
}
private function storeImage($user)
{
    if (request()->has('image')) {
        $user->image = $user->email . '.' . request()->image->getClientOriginalExtension();
        request()->image->move(public_path('images'), $user->image);
    }
}

config/filesystem.php:


    /*
    |--------------------------------------------------------------------------
    | Default Filesystem Disk
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default filesystem disk that should be used
    | by the framework. The "local" disk, as well as a variety of cloud
    | based disks are available to your application. Just store away!
    |
    */
    'default' => env('FILESYSTEM_DRIVER', 'local'),
    /*
    |--------------------------------------------------------------------------
    | Default Cloud Filesystem Disk
    |--------------------------------------------------------------------------
    |
    | Many applications store files both locally and in the cloud. For this
    | reason, you may specify a default "cloud" driver here. This driver
    | will be bound as the Cloud disk implementation in the container.
    |
    */
    'cloud' => env('FILESYSTEM_CLOUD', 's3'),
    /*
    |--------------------------------------------------------------------------
    | Filesystem Disks
    |--------------------------------------------------------------------------
    |
    | Here you may configure as many filesystem "disks" as you wish, and you
    | may even configure multiple disks of the same driver. Defaults have
    | been setup for each driver as an example of the required options.
    |
    | Supported Drivers: "local", "ftp", "sftp", "s3", "rackspace"
    |
    */
    'disks' => [
        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],
        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],
        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'url' => env('AWS_URL'),
        ],
    ],

我在做什么错?如何删除旧照片?谢谢

使用unlink($ filename(函数。//$ filename是文件的路径。

如何从公共中删除文件?您可以使用File::delete('directory/file')

在更新这样的过程中。但是您可以向下滚动以查看其他方法。

use File;
//* store image to public folder
public function storeImage($user)
{
    $file = $user->file;
    if (request()->has('image')){
        $filename = $user->image . '.' . request()->image->getClientOriginalExtension();
        //your directory for example
        $directory = "/img/";
        //saving to (/public/img/filename)
        $file->move(public_path($dir), $filename); 
    }
}
//* delete image from public folder
public function deleteCurrentImage(){
    //your directory for example
    $directory = "/img/";
    //your current image
    $filename = Auth::user()->image;
    //deleting (/public/img/filename)
    File::delete($filename.$file);
}
//* update your current image
public function updateImage(Request $r){
    //delete first the current image
    $this->deleteCurrentImage();
    //and store new image
    $this->storeImage($r->all(), Auth::user());
}


您现在可以致电updateImage以更新您的当前个人资料。如果误解了您的问题,请告诉我。

最新更新