Laravel - 通过超链接打开存储在App目录中的文件?

问题描述:

我已经设置了我的系统,因此每创建一条新记录也会在存储文件夹内创建一个文件夹来保存相关文档,如PDF文件。Laravel - 通过超链接打开存储在App目录中的文件?

e.g. app/storage/records/123456/document.pdf

我在我的控制器中的以下内容:

@foreach($files as $file) 
    <div>{{ HTML::link($file, basename($file)) }}</div> 
@endforeach 

$files = File::allFiles(app_path().'/storage/records/'.$record->id); 

然后我就可以用下面的显示在我的记录视图的路径,以在特定文件夹中的文件

但是,当我点击链接时,它会将应用程序路径附加到URL的末尾,并且显然会返回404.

当我点击链接时,如何设置这个以触发HTTP下载?

+0

你想让文件下载或只是链接到文件? –

您将需要创建一个路径来检索您的文件并使用相应的下载标题发送它。在Laravel 5,最简单的形式是:

// routes.php 
Route::get('downloads/{record_id}/{filename}', function ($record_id, $filename) 
{ 
    $headers = [ 
     // set whatever extra download headers you want here... 
    ]; 
    return response()->download(app_path().'/storage/records/'.$record_id.'/'.$filename, $filename, $headers); 
}); 

您需要调整您的HTML ::链接()调用,以反映的下载路径,不管你选择调用它。