首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >PHP 多文件打包下载 zip

PHP 多文件打包下载 zip

原创
作者头像
IT工作者
发布2022-02-12 16:29:33
发布2022-02-12 16:29:33
2.1K0
举报
文章被收录于专栏:程序技术知识程序技术知识
代码语言:javascript
复制
<?php
$zipname = './photo.zip';

//服务器根目录下有文件夹public,其中包含三个文件img1.jpg, img2.jpg, img3.jpg,将这三个文件打包下载,并重设下载的目录结构及文件名 file1/newimg1.jpg, file1/newimg2.jpg, file2/newimg.jpg
$fileArr[0] = array('file_path' => './public/img1.jpg', 'down_path' => 'file1/newimg1.jpg');
$fileArr[1] = array('file_path' => './public/img2.jpg', 'down_path' => 'file1/newimg2.jpg');
$fileArr[2] = array('file_path' => './public/img3.jpg', 'down_path' => 'file2/newimg.jpg');

//要使用该类,需要先启用 extension=php_zip.dll
$zip = new \ZipArchive ();
$res = $zip->open ( $zipname, \ZipArchive::CREATE );
if ($res === TRUE) {
    foreach ( $fileArr as $file ) {

        //这里将服务器上的文件添加到下载内容中,并重新赋值下载zip文件内该文件的路径
        $zip->addFile ( $file ['file_path'], $file ['down_path'] );
    }
}

$zip->close ();

header ( "Content-Type: application/zip" );
header ( "Content-Transfer-Encoding: Binary" );
header ( "Content-Length: " . filesize ( $zipname ) );
header ( "Content-Disposition: attachment; filename=\"" . basename ( $zipname ) . "\"" );

readfile ( $zipname );

//如不删除,则在服务器上会有 $zipname 这个zip文件
@unlink ( $zipname );

/*
下载后的 photo.zip 压缩包内包含两个文件夹 file1,file2。file1内包含文件为 newimg1.jpg,newimg2.jpg ,file2内包含文件为 newimg.jpg
photo.zip
-- file1
        -- newimg1.jpg
        -- newimg2.jpg
-- file2
        -- newimg.jpg

*/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档