我试图在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
正如我所说,我希望得到这个尺寸,但我怎么能这样做,我想在视图中处理它,但我真的不想这样做。
话虽如此,我实际上知道如何这样做:
@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
但我认为在观点中这样做是不对的?
答案 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);
}
或者,你甚至可以为它做一个辅助功能。