Laravel - 使用allfiles返回空数组

时间:2015-10-01 21:11:08

标签: php laravel laravel-5.1

我几乎在所有项目中使用了laravel,并且在尝试列出目录中的所有文件时遇到了问题。

以下是我的代码:

            $directory = ("upload/"."$username->username");

        $scanned_directory = storage::allfiles($directory);

因此,您可以看到First line是Upload中的目录,后跟帐户的用户名。

第二行用于扫描此目录并仅列出文件。可悲的是,它总是给我一个空阵列。使用Scandir()在这里工作......但它给了我不想要的文件夹。

所以...任何提示?我检查了API,我真的不知道这里有什么问题:(

3 个答案:

答案 0 :(得分:3)

使用Storage::allFiles('directory')方法时没有结果的原因是此方法仅查看应用程序的存储文件夹,通常是storage/app。因此,为什么修改配置中的存储路径就像@yassine所提到的那样(你不应该这样做)。

如果您希望使用storage文件夹之外的文件,只需使用File外观。例如File::allFiles('directory')

答案 1 :(得分:1)

我也有同样的本地存储问题。我修理了它:

  1. 项目/配置/ filesystems.php
  2. 第44行
  3. 将根文件夹更改为storage_path('app')更改为 BASE_PATH()
  4. 然后我提供了一个相关路径到Storage :: files()或Storage :: allfiles()中的根文件夹。

    与Storage :: allfiles(“app”)类似,如果我想获取相对于配置文件中给出的基本路径的子文件夹“app”的文件。

    祝你好运

答案 2 :(得分:0)

$directory = base_path("upload/"."$username->username"); $scanned_directory = storage::allfiles($directory); 必须是laravel根文件夹的绝对路径。

当您上传的文件夹位于根文件夹中时,请尝试以下

public void function() { 
    Map<String, Person> ... 

   {  
      Person obj ... 
      ... 
      map.add(obj)
   }
   {  
      Person obj ... 
      ... 
      map.add(obj)
   }

}