首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下载多个文件作为ZIP - Laravel 7

下载多个文件作为ZIP - Laravel 7
EN

Stack Overflow用户
提问于 2020-04-06 22:44:03
回答 1查看 1.4K关注 0票数 0

如果我dd($files);

我得到了

代码语言:javascript
复制
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"
]

下载()

代码语言:javascript
复制
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():创建临时文件失败:权限被拒绝

如何防止此错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-06 22:50:01

啊.。我发现了我自己的问题。

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

$zipFile =

工作守则

代码语言:javascript
复制
    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);

}

结果✨

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61070112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档