检查文件夹已存在,如果没有在laravel中按id创建新文件夹

时间:2017-01-02 09:24:49

标签: laravel laravel-5

我想将我的图片存储到特定文件夹,该文件夹将按页面ID命名。例如,如果Page id = 1,则文件夹位置应为public / pages / page_id / image_here。

如果该文件夹尚不存在,系统将生成并以其页面ID命名。

 $id=1;
 $directoryPath=public_path('pages/' . $id);

if(File::isDirectory($directoryPath)){
        //Perform storing
    } else {
        Storage::makeDirectory($directoryPath);
        //Perform storing
    }

但我有错误" mkdir():无效的参数"。 我能知道它为什么会发生吗?

经过我的研究,有人说文件夹名称应该以id + token为基础,因此入侵者无法根据id搜索图像,是否有可能实现?

3 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,但是当我使用File代替Storage时,它就有效了!

$id=1;
$directoryPath=public_path('pages/' . $id);

if(File::isDirectory($directoryPath)){
    //Perform storing
} else {
    File::makeDirectory($directoryPath);
    //Perform storing
}

希望这有效!

答案 1 :(得分:0)

当您使用Storage外观时,它会使用local磁盘作为默认设置,配置为使用storage_path()

因此,如果您想在public目录中创建目录,请使用File::makeDirectory这只是mkdir()的简单包装器以及其他选项或直接使用mkdir()

File::makeDirectory($directoryPath);
mkdir($directoryPath);

答案 2 :(得分:0)

For basic Laravel file system the syntax is :
At very top under namespace write:
use File;

Then in your method use:

$id=1;
$directoryPath=public_path('pages/' . $id);

if(File::isDirectory($directoryPath)){
    //Perform storing
} else {

    File::makeDirectory($directoryPath, 0777, true, true);
    //Perform storing
}