如何使用Laravel storage
检查目录是否存在?
在文档中只有如何检查文件是否存在的说明。
Storage::disk('local')->exists('file.jpg');
如何使用Laravel storage
检查目录是否存在?
在文档中只有如何检查文件是否存在的说明。
Storage::disk('local')->exists('file.jpg');
has()
方法用于确定磁盘上是否存在给定的文件:$exists = Storage::disk('s3')->has('file.jpg');
这里没有一个特别回答如何检查S3中是否存在一个特定的文件夹的答案。下面是我的解决方法,它可以工作:
Storage::disk('s3')->exists('FOLDER_NAME')
上述代码将返回一个布尔值。该检查适用于文件夹和文件名。
in_array('directoryYoureLookingFor', Storage::disk('s3')->directories('parentDirectory'));
我刚刚检查过,这个解决方案适用于Laravel 5.3。
在数组上调用成员函数has()
。 - Jamiein_array('users/' . $user->id, Storage::disk('s3')->directories('users'));
- JamieisDirectory
方法:if (File::isDirectory($filename))
{
echo "Yes. It's a directory.";
}
我也遇到过相同的问题,想要检查在 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;
}
}
你可以做以下的事情,即获取文件名并将其与你尝试上传的文件名进行比较,如果存在则给出一个消息,否则你可以插入。
$file = Storage::disk('local')->get($filename);
if($file){
echo "file exist";
} else {
Storage::disk('local')->put($filename,FILE::get($file));
}