PHP 利用 ZipArchive 将多个文件生成压缩包并下载 和解压压缩包

本人是在工作中需要将阿里云oss的图片通过页面进行多选,然后生成压缩包的形式下载,由于oss不支持改功能,则使用的 ZipArchive 进行压缩下载
下面是方法:

        $zipname = tempnam(__dir__.'/log', '');
        $zip = new ZipArchive();

        if ($zip->open($zipname, ZIPARCHIVE::CREATE) !== TRUE) {
            exit ('无法打开文件,或者文件创建失败');
        }
        // 图片的路径,可以是多个文件
        $files = [ 'YNRJZHKnMm.jpg' ];

        $zip->open($zipname, ZipArchive::CREATE);
        foreach ($files as $file) {
              
            $fileContent = file_get_contents($file);
            $file = iconv('utf-8', 'GBK', basename($file));
            $zip->addFromString($file, $fileContent);
        }
        $zip->close();

        header('Content-Type: application/zip;charset=utf8');
        header('Content-disposition: attachment; filename=附件' . date('Y-m-d') . '.zip');
        header('Content-Length: ' . filesize($zipname));
        readfile($zipname);
        unlink($zipname);
        die;

解压的功能后续加上去

你可能感兴趣的:(php,知识点)