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


Laravel 5: Dynamically Generate Links (Routes) to Uploaded Files

我有一个简单的表单,用户可以在其中上传文件。文件上载到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="中放入什么才能链接到这些文件(以及我需要使用哪些路由才能使这些链接正常工作)?

您可以使用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>
href="/public/{{ basename($file) }}"

应该做的工作,使链接工作没有限制