如何在Laravel商店

时间:2017-03-01 17:18:40

标签: laravel storage

我想在存储空间中创建一个子文件夹 /存储/应用程序/公共/ user_folder

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

2 个答案:

答案 0 :(得分:1)

您的问题有点模糊,但我会假设您想以编程方式执行此操作,可能是在控制器内执行此操作?

因此,让我们使用Laravel的Filesystem课来帮助我们做到这一点。

在控制器的顶部,我们可以像这样: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就会重新创建目录。

您可以阅读有关Filesystem类here的更多信息。

我希望这会有所帮助。

答案 1 :(得分:1)

最简单的方法是使用mkdir。假设775是您的正确许可:

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