完成一些工作后,Laravel-backpack下载完成

时间:2016-10-25 10:58:43

标签: download laravel-5.2 response backpack-for-laravel

我使用背包,我试图下载内置有一些查询和图像的Json的zip。我需要的就是背包备份。备份完成后下载。在我的情况下,我需要下载拉链时完成。

压缩proses位于控制器的下载功能中,当用户点击&#34时下载#34;

  public function download($packId)
        {
            $content = DB::table('questions')                  
                         ->join('package_has_questions', 'questions.id', '=', 'package_has_questions.question_id')    
                         ->where('package_has_questions.package_id','=',$packId)
                         ->select('questions.*')          
                         ->get();

     $fileName = carbon::now()
     $data = json_encode($content);

     $files = glob(public_path('export/'.$fileName.'.json'));

        $zipper = new \Chumper\Zipper\Zipper;
        $zipper->make('export/'.$fileName.'.zip')->add($files);

        foreach($content as $eachContent){   
            $imgPathA=glob(public_path('img/game/'.$eachContent->img_a_file));
            $imgPathB=glob(public_path('img/game/'.$eachContent->img_b_file));
           // dd($imgPath);
            $zipper->folder('img')->add($imgPathA);
            $zipper->folder('img')->add($imgPathB);
        }
     $pathDownload =Response::download(public_path('export/'.$fileName.'.zip'))->deleteFileAfterSend(true);

    return $pathDownload;
}

这会返回一个错误

  

File.php第37行中的FileNotFoundException:   2016-10-25.zip"不存在

但是当我回来并尝试再次下载时,我可以下载它。之后错误文件不再存在

看起来,在完成压缩之前,下载响应正在运行。在第二次尝试中,响应是从第一次尝试下载已完成的zip。

如果有人知道某种正确的方式,我会非常感激 请帮助,我真的卡在这里

1 个答案:

答案 0 :(得分:1)

您需要在下载之前关闭zip。

...
$zipper->close();
$pathDownload =Response::download(public_path('export/'.$fileName.'.zip'))->deleteFileAfterSend(true);
...