响应::下载什么都不做

时间:2014-05-23 16:13:34

标签: laravel-4 download

我在公共文件夹外部下载文件时遇到问题。这是场景:

无法通过此应用程序从任何地方访问这些文件,这些下载必须通过访问控制。因此,如果用户未登录并且有权限,则用户无法下载该文件。

我有一个用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);
     }

问题是它什么都不做,只是打开一个空白页面。我错过了什么吗?哦,是的,上面提到的路线的链接打开一个空白标签。

我感谢任何帮助。谢谢!

2 个答案:

答案 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将不执行任何操作。