Laravel 5:动态生成链接(路由)到上载的文件

时间:2016-04-30 22:01:27

标签: php laravel laravel-5 laravel-routing

我有一个简单的表单,用户可以上传文件。文件上传到 public / uploads 目录。

在表单下方列出了 public / uploads 目录中的所有文件。

所以,这是我的控制器方法:

public function store(Request $request)
{
    if ($request->hasFile('file_upload')) {
        if ($request->file('file_upload')->isValid()) {
            $request->file('file_upload')->move(public_path().'/uploads/', $request->file('file_upload')->getClientOriginalName());
        }
    }

    $list_of_files = \File::allFiles(public_path().'/uploads/');

    return view('foo', compact('list_of_files'));
}

以下是显示文件列表的View文件:

<ul>
    @foreach($list_of_files as $file)
        <li><a href="#">{{ basename($file) }}</a></li>
    @endforeach
</ul>

我应该在 href =“”中添加哪些文件链接(以及我需要哪些路线以便这些链接有效)?

2 个答案:

答案 0 :(得分:1)

您可以使用asset()帮助程序生成公共目录的URL。

鉴于您将文件存储在uploads目录中。您可以像<li><a href="{{ asset('uploads/' . basename($file)) }}">{{ basename($file) }}</a></li>

那样使用它

您只需要确保basename($file)是文件的名称,这样当他们点击链接时,它实际上会将文件带到文件中。

完整:

<ul>
    @foreach($list_of_files as $file)
        <li><a href="{{ asset('uploads/' . basename($file)) }}">{{ basename($file) }}</a></li>
    @endforeach
</ul>

答案 1 :(得分:0)

href="/public/{{ basename($file) }}"

应该做的工作是让链接无限制地工作