【问题标题】:Exclude Folder with Laravel File::allFiles使用 Laravel File::allFiles 排除文件夹
【发布时间】:2017-05-21 21:19:22
【问题描述】:

我目前正在使用以下功能:

public function recentImages(){
    foreach(\File::allFiles("up") as $path){
        $files[] = pathinfo($path);
    }
    return view('recent-images-view')->with('files',$files);
}

列出我上传文件夹中的所有图像,但这也包括在名为“thumbs”的单独文件夹中分隔的缩略图。

我想知道是否有任何方法可以告诉 allFiles 函数排除名称为 thumbs 的文件夹。或者我应该完全以不同的方式处理这个问题?

感谢您提前提供任何信息。

【问题讨论】:

    标签: image laravel file directory


    【解决方案1】:

    File::allFiles() 将递归地从给定目录中获取所有文件。尝试使用File::files(),它将仅从给定目录中获取所有文件。

    更新

    因为您有其他需要的目录。我想出了以下解决方案。

    public function images(){
        foreach(\File::directories('up') as $dir) { // Get all the directories
            if(str_contains('thumbs', $dir)) { // Ignore thumbs directory
                continue;
            }            
    
            foreach(\File::files($dir) as $path) { // Get all the files in each directory
                $files[] = pathinfo($path);
            }
        }
    
        return view('recent-images-view')->with('files',$files);
    }
    

    没有测试,概念是通过忽略不需要的目录来获取所有目录并获取这些目录中的所有文件。

    【讨论】:

    • 问题是我有一个上传文件夹,其中包含许多基于年/月自动生成的子目录。那么我可以使用 files() 来排除位于months文件夹内的thumbs文件夹吗?一般来说,路径看起来像这样: 图片文件:up\2017\01\07004210-logoflat.jpg 拇指文件:up\2017\01\thumbs\thm_07004210-logoflat.jpg 我目前也在考虑更好的方法实际上解决了这个问题,因为每次有人请求它时服务器上调用所有文件可能有点困难。将其上传到数据库并从那里调用文件会好吗?
    • @RafaëlDeJongh 想到了另一种方式。我无法评论上传到数据库是否是一种好方法,因为我没有这方面的经验。你可以试试
    • 感谢您的跟进回复!非常感谢,但是当前的概念代码导致 Undefined variable: files 错误。我已经在考虑以这样的方式进行操作,所以我可能会尝试以您的代码为基础,看看我能解决什么问题。然而,乍一看,我并没有直接设法解决手头的问题。无论哪种方式,感谢您的帮助!编辑:这似乎是因为目录只解析出第一个子文件夹而不是子文件夹的子文件夹,可悲的是。 (回声输出 = up\2017)
    • 第二次编辑:这个设置可能适用于我的一般文件结构:foreach(\File::directories("up/".date("Y")) as $dir) { if(str_contains ("拇指", $dir)) { 继续; } foreach(\File::files($dir) as $path) { $files[] = pathinfo($path); } } 编辑:废话,我忘了那个文件:目录在给定文件夹中查找子文件夹。所以从修复它的日期中删除 /m ;) 这个问题很好,感谢您的帮助!非常感谢;)
    • 好吧,我已经设法通过在第一个 foreach 循环中使用 array_reverse() 按最新排序来解决这个问题。所以是的,这很好地解决了这个问题的所有问题和问题;)
    猜你喜欢
    • 2014-08-28
    • 1970-01-01
    • 2021-02-05
    • 2019-12-26
    • 2018-10-12
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    相关资源
    最近更新 更多