2

我知道我们可以使用 Storage::delete() 或 File::delete 来删除 laravel 中的文件夹和/或文件,但这似乎不适用于直接在 storage 下的文件夹,例如 storage/tmp。它仅适用于存储/应用程序。如何处理?

if (file_exists( storage_path() . '/tmp/file1'.'.pdf' )) {
     File::delete(storage_path() . '/tmp/file1'.'.pdf') );
}

谢谢

4

2 回答 2

5

config/filesystems.php您可以使用 storage 文件夹作为 root定义一个新磁盘:

'disks' => [

    ...

    'storage' => [
        'driver' => 'local',
        'root' => storage_path(),
    ],

    ...

],

然后你可以删除一个文件夹,比如tmp,像这样:

Storage::disk('storage')->deleteDirectory('tmp');
于 2020-07-27T11:59:23.680 回答
0

发生这种情况是因为您在文件系统配置中有默认配置,请转到配置文件夹 config/filesystems.php

disk属性中,您可以修改或添加新密钥

当你直接使用存储而不调用磁盘方法时,Laravel 将使用名为“本地”的默认磁盘

'disks' => [
    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
     ]

如何在 app 文件夹中看到 root 键启动,所以当你使用 Storage::delete() 时总是会删除 app 文件夹中的所有内容,解决方案可以是更改本地磁盘的 root 键

'disks' => [
    'local' => [
        'driver' => 'local',
        'root' => storage_path(),
     ]

这种方式现在当您调用存储时,根将直接通过存储路径,但最好的方法是添加一个新密钥并且不要覆盖默认配置

'disks' => [
    'storage' => [
        'driver' => 'storage',
        'root' => storage_path(),
     ]

而现在你可以这样使用新盘了:

Storage::disk('storage')->delete('x')
于 2020-07-27T12:12:06.913 回答