I'm getting error as the "file does not exist" as folder does exist.
The file "../storage/app/public/bks/case_1/XsIbdGSJow7O3fhq9LyU.zip" does not exist
I have checked with Database field name zipname
is not present but job_id
is present. I'm not sure but do we have to have field name as zipname
present in Database for this to download.
public function downloadZip(Request $request)
{
@$job_id = $request->job_id;
@$filenames = DB::table('analytics_report')->where('job_id',$job_id)->get()->pluck('filename')->toArray();
@$zipname = $request->job_id;
$zip = new \ZipArchive;
$zip->open($zipname, \ZipArchive::CREATE);
foreach ($filenames as $filename){
$zip->addFile($filename);
}
$zip->close;
@$path = '../storage/app/public/bks/case_1/'.$zipname;
return response()->download($path);
}
Thanks!
You have a typo here $zip->close;
. Should be $zip->close()
;
Your code needs some checks before everything else.
public function downloadZip(Request $request)
{
if($request->has("job_id") === false) return;
$job_id = $request->job_id;
$filenames = DB::table('analytics_report')
->where('job_id',$job_id)
->get()
->pluck('filename')
->toArray();
if (count($filenames) == 0) return;
$zipname = $request->job_id;
$zip = new \ZipArchive;
$zip->open($zipname, \ZipArchive::CREATE);
foreach ($filenames as $filename){
$zip->addFile($filename);
}
$zip->close();
$path = stprage_path('app/public/storage/bks/case_1/'.$zipname);
return response()->download($path);
}