无法使用File :: deleteDirectory删除文件夹

时间:2018-08-01 13:36:29

标签: php laravel

我正在尝试创建一个功能,以删除相册,该相册的所有图像,缩略图文件夹以及最后带有相册名称的文件夹。

这些是我要删除的文件夹的路径:

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;

1 个答案:

答案 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)

这是基础功能,因此您可以有一个清晰的主意。

希望这会有所帮助。