我在创建下载链接以从Laravel Storage文件夹通过移动应用程序下载文件时遇到问题。
我做了类似$link = Response::Download(storage_path()./file/example.png)
的事情,但无济于事。
我已将文件移至公用文件夹并使用http://domain.com/file/example.png
和asset('file/example.png')
,但无济于事。
我正在404 NOT FOUND ERROR
我该如何解决这个问题?
答案 0 :(得分:23)
查看Laravel Helpers文档:http://laravel.com/docs/4.2/helpers
如果您想要链接到您的资产,可以这样做:
$download_link = link_to_asset('file/example.png');
修改强>
如果上述方法不适合你,那么你可以在 app / routes.php 中实现一个相当简单的下载路线,如下所示:
请注意,此示例假设您的文件位于 app / storage / file / 位置
// Download Route
Route::get('download/{filename}', function($filename)
{
// Check if file exists in app/storage/file folder
$file_path = storage_path() .'/file/'. $filename;
if (file_exists($file_path))
{
// Send Download
return Response::download($file_path, $filename, [
'Content-Length: '. filesize($file_path)
]);
}
else
{
// Error
exit('Requested file does not exist on our server!');
}
})
->where('filename', '[A-Za-z0-9\-\_\.]+');
用法:http://your-domain.com/download/example.png
这将在:app / storage / file / example.png中查找文件(如果存在,将文件发送到浏览器/客户端,否则将显示错误消息)。
P.S。 '[A-Za-z0-9\-\_\.]+
此正则表达式确保用户只能请求名称包含A-Z
或a-z
(字母),0-9
(数字),-
或{{1 }或_
(符号)。其他一切都被丢弃/忽略。这是一项安全/保障措施......
答案 1 :(得分:6)
更新Laravel 5.0及更高版本的答案:
<a href={{ asset('file/thing.png') }}>Thing</a>
答案 2 :(得分:0)
您不需要任何路由或控制器。只要给它锚标签。
<a href="{{URL::to('/')}}/file/example.png" target="_blank">
<button class="btn"><i class="fa fa-download"></i> Download</button>
</a>
答案 3 :(得分:0)
您不需要任何路由或控制器。只需将其提供给anchor
标签。
<a href="{{URL::to('/')}}/file/example.png" target="_blank">
<button class="btn"><i class="fa fa-download"></i> Download File</button>
</a>