检查文件夹是不是已经存在,如果没有在 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 创建一个新文件夹的主要内容,如果未能解决你的问题,请参考以下文章
使用Larave5.6l提交POST请求出现The page has expired due to inactivity错误