使用PHP打包下载图片,zip压缩

public function productDownload()
{
    $id = intval(input('id', 0));
    $product = $this->opDataModel->setTable('photo_product')->where('id', $id)->find();
    if(empty($product)){
        return $this->output(0, '作品不存在');
    }

    $photoOrigin = $this->opDataModel->setTable('photo_image')->where('product_id', $id)->column('photo_origin');
    if(empty($photoOrigin)){
        return $this->output(0, '作品不存在图片');
    }

    $tmpFile = tempnam(sys_get_temp_dir(), 'photo_');
    if(!$tmpFile){
        return $this->output(0, 'system error');
    }
     
    $zip = new \ZipArchive();
    $zip->open($tmpFile, \ZipArchive::CREATE);

    foreach($photoOrigin as $v){
        $fileContent = file_get_contents($v);
        $zip->addFromString(basename($v), $fileContent);
    }

    $zip->close();

    $out = "{$product['activity_id']}-{$product['id']}-".mb_substr($product['name'], 0, 10).'.zip';
     
    header('Content-Type: application/zip');
    header('Content-disposition: attachment; filename='.$out);
    header('Content-Length: ' . filesize($tmpFile));
    readfile($tmpFile);
    
    unlink($tmpFile);
    exit;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值