我在公共文件夹外部下载文件时遇到问题。这是场景:
无法通过此应用程序从任何地方访问这些文件,这些下载必须通过访问控制。因此,如果用户未登录并且有权限,则用户无法下载该文件。
我有一个用get变量定义的路由。此ID进入控制器,控制器调用以下方法:
public static function downloadFile($id){
$file = FileManager::find($id);
//PDF file is stored under app/storage/files/
$download= app_path().substr($file->location,6);///home/coursesupport/public_html/app/storage/files/fom01/7-2/activities-and-demos.pdf
$fileName = substr($download,strrpos($download,'/')+1);//activities-and-demos.pdf
$mime = mime_content_type($download);//application/pdf
$headers = array(
'Content-Type: '.$mime,
"Content-Description" => "File Transfer",
"Content-Disposition" => "attachment; filename=" . $fileName
);
return Response::download($download, $fileName, $headers);
}
问题是它什么都不做,只是打开一个空白页面。我错过了什么吗?哦,是的,上面提到的路线的链接打开一个空白标签。
我感谢任何帮助。谢谢!
答案 0 :(得分:0)
它应该只做这个:
public static function downloadFile($id)
{
$file = FileManager::find($id);
$download= app_path().substr($file->location,6);
$fileName = substr($download,strrpos($download,'/')+1);
return Response::download($download, $fileName);
}
答案 1 :(得分:0)
确保您的路线实际上返回了返回的响应。例如:
Route::get('download', function()
{
return DownloadHandler::downloadFile(1);
});
如果路线中没有return
,则IlluminateResponse
将不执行任何操作。