Laravel 5 从目录中的所有文件获取大小

Laravel 5 Get size from all files inside a directory

我试图在 laravel 中创建一个简单的文件管理器,实际上我只想查看 'files' 文件夹中的所有文件,并使用 laravel 存储我设法获得了文件夹内所有文件的名称,但我想获取更多数据,例如每个文件的大小。

控制器:

public function showFiles() {
    $files =  Storage::disk('publicfiles')->files();
    return view('files')->with('files', $files);
}

查看:

@foreach($files as $file)
    <tr>
        <td>{{$file}}</td>
        <td></td>
        <td class="actions-hover actions-fade">
            <a href=""><i class="fa fa-download"></i></a>
        </td>
    </tr>
@endforeach

Getting this .

正如我所说,我想获得尺寸,但我怎么能那样做,我很难在视图中处理它,但我真的不想那样做。

话虽这么说,我其实知道怎么做:

@foreach($files as $file)
    <tr>
        <td>{{$file}}</td>
        <td>
        <?php
        $size = Storage::disk('publicfiles')->size($file);
        echo $size;
        ?>

        </td>
        <td class="actions-hover actions-fade">
            <a href=""><i class="fa fa-download"></i></a>
        </td>
    </tr>
@endforeach

但是我认为在视图中这样做是不对的,对吗?

是的,这样做并不是一个好主意。只需像这样更改您的控制器方法:

public function showFiles() {
  $files_with_size = array();
  $files = Storage::disk('publicfiles')->files();
  foreach ($files as $key => $file) {
    $files_with_size[$key]['name'] = $file;
    $files_with_size[$key]['size'] = Storage::disk('publicfiles')->size($file);
  }
  dd($files_with_size);
}

或者,您甚至可以为此创建一个辅助函数。