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

时间:2016-05-29 03:33:14

标签: file laravel laravel-5 storage filesize

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

控制器:

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

但我认为在观点中这样做是不对的?

1 个答案:

答案 0 :(得分:1)

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

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);
}

或者,你甚至可以为它做一个辅助功能。