简体   繁体   English

下载 Laravel 中的 Zip 文件时文件不存在

[英]File does not exist while downloading Zip file in Laravel

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文件“../storage/app/public/bks/case_1/XsIbdGSJow7O3fhq9LyU.zip”不存在

I have checked with Database field name zipname is not present but job_id is present.我检查了数据库字段名称zipname is not present 但job_id存在。 I'm not sure but do we have to have field name as zipname present in Database for this to download.我不确定,但我们是否必须将字段名称作为zipname存在于数据库中才能下载。


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;你有一个错字$zip->close; . . Should be $zip->close() ;应该是$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);

 }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM