如何在 Laravel 商店中创建子文件夹

How do I create a subfolder in the Laravel Store

我想在存储中创建一个子文件夹,例如 /storage/app/public/user_folder

有谁知道如何使用适当的权限进行操作?

你的问题有点含糊,但我假设你想以编程方式进行,也许是在控制器中?

所以让我们利用 Laravel 的 Filesystem class 来帮助我们做到这一点。

在你的控制器的顶部,让我们像这样把它放进去:use Illuminate\Filesystem\Filesystem;

现在我们可以实例化它了。 $file = new Filesystem();。我可能会这样做:

    $file = new Filesystem();
    $username = 'userNameGoesHere';
    $directory = 'directory/goes/here/' . $username;
    if ( $file->isDirectory(storage_path($directory)) )
    {
        return 'Directory already exists';
    }
    else
    {
        $file->makeDirectory(storage_path($directory), 755, true, true);
        return 'Directory has been created!';
    }

现在,让我们分解一下我们刚刚做了什么。首先,我们检查目录是否存在。我认为这样做是一种很好的做法。如果没有,那么我们创建它。

让我们分解一下 makeDirectory() 的参数是什么。首先是系统文件路径。我们利用 Laravel 给我们的 storage_path() 帮助程序将我们指向存储目录。然后我们传入目录。第二个参数是该目录的 chmod 权限。默认设置为 493。第三,我们将目录创建设置为递归,这意味着它将在您的路径中创建每个目录。递归的默认值为 false。最后一个参数告诉目录创建强制执行它。如果您不检查该目录是否存在并尝试创建它而不将其设置为 true,Laravel 将抛出一个异常,抱怨该目录已经存在。如果它设置为 true Laravel 无论如何都会重新创建目录。

您可以阅读有关文件系统的更多信息 class here

希望对您有所帮助。

最简单的方法就是简单地使用mkdir。假设 775 是适合您的权限:

mkdir(storage_path('app/public/user_folder'), 0775)