为了账号安全,请及时绑定邮箱和手机立即绑定

将多个文件下载为 ZIP - Laravel 7

将多个文件下载为 ZIP - Laravel 7

PHP
白衣染霜花 2022-12-11 16:31:41
如果我dd($files);我有array:4 [▼  0 => "/Users/jdoe/Sites/laravel7/public/img/portfolio/58-Admin-Site-Dashboard/126/full.jpg"  1 => "/Users/jdoe/Sites/laravel7/public/img/portfolio/58-Admin-Site-Dashboard/127/full.jpg"  2 => "/Users/jdoe/Sites/laravel7/public/img/portfolio/58-Admin-Site-Dashboard/128/full.jpg"  3 => "/Users/jdoe/Sites/laravel7/public/img/portfolio/58-Admin-Site-Dashboard/130/full.jpg"]下载()public function download($id){    $portfolioImages = PortfolioImage::where('portfolio_id',$id)->get();    $files = [];    foreach ($portfolioImages as $i => $portfolioImage) {        $files[$i] = public_path(). $portfolioImage->image_path;    }    // dd($files);    $zip = new ZipArchive;    $fileName = $id.'.zip';    if ($zip->open(public_path($fileName), ZipArchive::CREATE) === TRUE)    {        foreach ($files as $key => $value) {            $relativeNameInZipFile = basename($value);            $zip->addFile($value, $relativeNameInZipFile);        }        $zip->close();    }    return response()->download(public_path($fileName));}我一直收到这个错误ZipArchive::close():创建临时文件失败:权限被拒绝如何防止此错误?
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

啊..没关系,发现我自己的问题。


$zipFile = public_path().'/assets/fe/img/portfolio/'.$folderName.'/'.$folderName.'.zip';


工作代码

    public function download($id)

    {


    $portfolioImages = PortfolioImage::where('portfolio_id',$id)->get();


    $files = [];

    foreach ($portfolioImages as $i => $portfolioImage) {

        $files[$portfolioImage->id] = public_path(). $portfolioImage->image_path;


    }


    // dd($files);


    $portfolio  = Portfolio::find($id);

    $folderName = $portfolio->id.'-'.str_replace(' ', '-',$portfolio->name);

    $zip        = new ZipArchive;

    $zipFile    = public_path().'/assets/fe/img/portfolio/'.$folderName.'/'.$folderName.'.zip';


    if ($zip->open($zipFile, ZipArchive::CREATE) === TRUE)

    {


        //add files into a zip

        foreach ($files as $key => $value) {


            //replace word "full" with $portfolioImage->id

            $relativeNameInZipFile = str_replace('full',$key,basename($value));

            $zip->addFile($value, $relativeNameInZipFile);

        }


        $zip->close();

    }


    return response()->download($zipFile);


}

结果✨

//img1.sycdn.imooc.com//639595bd0001898406340309.jpg

查看完整回答
反对 回复 2022-12-11
  • 1 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号