我在创建下载链接以通过Laravel Storage文件夹通过移动应用下载文件时遇到问题。
我做了类似的事,$link = Response::Download(storage_path()./file/example.png)
但无济于事。
我将文件移到公用文件夹并使用http://domain.com/file/example.png
,asset('file/example.png')
但无济于事。
我正进入(状态 404 NOT FOUND ERROR
我该如何解决?
看看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(如果存在,则将该文件发送到浏览器/客户端,否则将显示错误消息)。
PS'[A-Za-z0-9\-\_\.]+
此正则表达式可确保用户只能请求名称包含A-Z
或a-z
(字母),0-9
(数字)-
或_
或.
(符号)的文件。其他所有内容均被丢弃/忽略。这是一项安全措施。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句