检查文件夹是不是已经存在,如果没有在 laravel 中通过 id 创建一个新文件夹

Posted

技术标签:

【中文标题】检查文件夹是不是已经存在,如果没有在 laravel 中通过 id 创建一个新文件夹【英文标题】:Checking folder already existed and if not create a new folder by id in laravel检查文件夹是否已经存在,如果没有在 laravel 中通过 id 创建一个新文件夹 【发布时间】:2017-05-16 09:36:19 【问题描述】:

我想将我的图像存储到特定文件夹,该文件夹将由页面 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(): Invalid argument”的错误。 我能知道为什么会这样吗?

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

【问题讨论】:

在你的 else 条件下,只需使用 File::makeDirectory instande of Storage::makeDirectory create folder in laravel的可能重复 【参考方案1】:

我遇到了同样的问题,但是当我使用 File 而不是 Storage 时它可以工作!

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

//check if the directory exists
if(!File::isDirectory($directoryPath))
    //make the directory because it doesn't exists
    File::makeDirectory($directoryPath);


//Perform store of the file

希望这行得通!

【讨论】:

【参考方案2】:

当您使用Storage 外观时,它使用local 作为默认磁盘,该磁盘被配置为与storage_path() 一起使用。

因此,如果您想在 public 目录中创建目录,请使用 File::makeDirectory,它只是带有附加选项的 mkdir() 的简单包装器,或者直接使用 mkdir()

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

【讨论】:

【参考方案3】:
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

【讨论】:

以上是关于检查文件夹是不是已经存在,如果没有在 laravel 中通过 id 创建一个新文件夹的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter:检查记录是不是存在

使用Larave5.6l提交POST请求出现The page has expired due to inactivity错误

从FTP下载时如何检查文件是不是存在

检查特定文件夹中是不是已存在文件[重复]

使用 Boost Graph [BGL] 检查在 add_edge 之前是不是已经存在顶点

如何检查视图中是不是已经存在约束?