如果目录存在,我如何检查Laravel storage
?
在文档中,只记录了如何检查文件是否存在。
Storage::disk('local')->exists('file.jpg');
答案 0 :(得分:1)
您可以使用isDirectory
方法:
if (File::isDirectory($filename))
{
echo "Yes. It's a directory.";
}
答案 1 :(得分:1)
尝试在父目录中获取目录列表,并检查您要查找的目录是否在数组中:
in_array('directoryYoureLookingFor', Storage::disk('s3')->directories('parentDirectory'));
我刚检查过,此解决方案适用于Laravel 5.3。
答案 2 :(得分:1)
这里没有答案似乎专门回答检查S3中是否存在特定文件夹。这是我使用的并且有效:
Storage::disk('s3')->exists('FOLDER_NAME')
以上将返回一个布尔值。以上检查适用于文件夹和文件名。
答案 3 :(得分:1)
我也多次遇到同样的问题,用 Laravel 在 S3 上检查文件是否存在。我正在处理 Laravel 7.* 并且当文件上传到 S3 存储桶的子目录时,exists() 和 has() 函数没有提供正确的响应。我编写了一个非常适合我的函数。
public static function fileExistsS3($directoryOnS3, $image) {
$directoryOnS3 = Config::get('custom.AWS_PUBLIC_ENDPOINT').$directoryOnS3;
$exists = @getimagesize($directoryOnS3.$image);
if(isset($exists) && is_array($exists)) {
return true;
} else {
return false;
}
}
如果文件在 S3 上可用则返回 true,否则返回 false。
答案 4 :(得分:0)
您可以执行以下操作,即您可以获取文件名并将其与文件名进行比较,如果存在,则将文件名称与上传文件名相同,否则您可以插入
$file = Storage::disk('local')->get($filename);
if($file){
echo "file exist";
} else {
Storage::disk('local')->put($filename,FILE::get($file));
}
答案 5 :(得分:0)
在核心php中,您可以使用file_exists()函数,
if (!file_exists($path)) {
// path does not exist
}
在laravel中,您可以使用File :: exists()
if(!File::exists($path)) {
// path does not exist
}
答案 6 :(得分:0)
在Laravel 5.7中使用:
has()
方法用于确定磁盘上是否存在给定文件:
$exists = Storage::disk('s3')->has('file.jpg');