您现在可以致电
我正在从事一个项目,我想每次上传另一件事上的个人资料上的上一张照片。
我编写了代码,但没有删除旧文件。我将旧照片存储在$ 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
以更新您的当前个人资料。如果误解了您的问题,请告诉我。