【发布时间】:2018-01-20 05:39:27
【问题描述】:
我在/public/storage/attachment 中存储了一个文件,该文件有一个hashname,它也存储在我的数据库中以及attachments 表filehashname 列中
public/attachment/N52lbwmzubAcgUfHYhCC4A6NFBniIVmK.pdf
在视图中,我将文件显示为链接,这样当用户单击链接时,文件就会被下载。
<a href="{{ URL::to( '/download/'.$post->attachments[0]->filehashname) }}">
{{ $post->attachments[0]->filename }}
</a>
web.php
Route::get('/download/{filehashname}', 'PostController@downloadAttachment');
后控制器
public function downloadAttachment($filehashname)
{
$file= public_path('/storage/attachment/'.$filehashname);
return response()->download($file, 'demo.pdf');
}
但这不会下载文件它打开 URL http://localhost:8000/download/public/attachment/N52lbwmzubAcgUfHYhCC4A6NFBniIVmKfctqMNOq.pdf 和 Page Not Found
如果我硬编码文件名并单击链接,则它会下载,但在 url 中动态传递文件名会导致页面未找到错误。
如何解决?
【问题讨论】:
-
文件是否退出文件夹?
-
是的,确实如此。当我将名为 abc.pdf 的文件存储在文件夹中并直接在控制器中将路径作为 $file= public_path('/storage/attachment/abc.pdf');但是当我在 URL 中传递文件名时它不起作用
-
您的文件是保存在公用文件夹还是存储文件夹?
标签: php laravel file laravel-5 download