我使用背包,我试图下载内置有一些查询和图像的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。
如果有人知道某种正确的方式,我会非常感激 请帮助,我真的卡在这里
答案 0 :(得分:1)
您需要在下载之前关闭zip。
...
$zipper->close();
$pathDownload =Response::download(public_path('export/'.$fileName.'.zip'))->deleteFileAfterSend(true);
...