0

我使用背包,我试图下载里面有 Json 的一些查询和图像的 zip。我需要的就像背包备份一样。备份完成后下载。就我而言,压缩完成后我需要下载。

压缩散文在控制器中的下载功能中,当用户单击“下载”时调用

  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。

如果有人知道正确的方法,我真的很感激请帮助,我真的卡在这里

4

1 回答 1

1

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

...
$zipper->close();
$pathDownload =Response::download(public_path('export/'.$fileName.'.zip'))->deleteFileAfterSend(true);
...
于 2016-10-25T16:38:20.050 回答