在公用文件夹之外下载文件时遇到问题。以下是场景:
这些文件不能从任何地方访问,只能通过此应用程序访问,并且这些下载必须通过访问控制。因此,如果用户没有登录并且没有权限,则无法下载该文件。
我有一个使用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);
}问题是它什么也不做,只是打开一个空白页。我是不是遗漏了什么?哦,对了,上面提到的路线的链接打开了一个空白标签。
我很感谢你的帮助。谢谢!
发布于 2014-05-24 00:17:08
它应该只通过这样做来工作:
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);
}发布于 2014-05-24 02:28:23
确保您的路由确实返回了返回的响应。例如:
Route::get('download', function()
{
return DownloadHandler::downloadFile(1);
});如果路由中没有return,IlluminateResponse将不会执行任何操作。
https://stackoverflow.com/questions/23833967
复制相似问题