我正在尝试创建一个功能,以删除相册,该相册的所有图像,缩略图文件夹以及最后带有相册名称的文件夹。
这些是我要删除的文件夹的路径:
C:\MAMP\htdocs\LaravelProject\public\storage\uploads\albums\test
C:\MAMP\htdocs\LaravelProject\public\storage\uploads\albums\test\thumbnails
测试和缩略图都是文件夹。到目前为止,我尝试过的是:
public function deleteAlbum($albumId){
$album = Album::where('id', $albumId)->first();
$albumImages = AlbumImage::where('album_id', $albumId)->get();
$album->tags()->detach();
$album->delete();
foreach ($albumImages as $albumImage) {
Storage::delete('public/uploads/albums/'.$album->name.'/'.$albumImage->file_name);
Storage::delete('public/uploads/albums/'.$album->name.'/thumbnails/'.$albumImage->file_name);
}
File::deleteDirectory('public/storage/uploads/albums/'.$album->name.'/thumbnails');
File::deleteDirectory('public/storage/uploads/albums/'.$album->name);
return redirect()->route('home');
}
但是,这段代码删除了图像,但保留了文件夹而没有删除它们,我也不知道为什么。
namespace App\Http\Controllers;
use App\Tag;
use App\Album;
use App\AlbumImage;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Auth;
use Image as InterventionImage;
use App\Image;
答案 0 :(得分:0)
如果您也要删除目录。您必须将第二个参数传递为false。
File::deleteDirectory('public/storage/uploads/albums/'.$album->name.'/thumbnails', false);
File::deleteDirectory('public/storage/uploads/albums/'.$album->name, false);
如果要删除目录,则必须通过false
,否则该目录将被保留并且不会被删除。
File::deleteDirectory('path/to/folder', false)
这是基础功能,因此您可以有一个清晰的主意。
希望这会有所帮助。