Laravel s3检查目录是否存在。

时间:2016-10-24 11:52:14

标签: laravel

如果目录存在,我如何检查Laravel storage

在文档中,只记录了如何检查文件是否存在。

Storage::disk('local')->exists('file.jpg');

https://laravel.com/docs/5.3/filesystem#retrieving-files

7 个答案:

答案 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');