当前位置:首页 > PHP

php实现zip下载

2026-02-16 17:45:50PHP

PHP实现ZIP下载的方法

使用PHP创建ZIP文件并实现下载功能可以通过内置的ZipArchive类完成。以下是具体实现步骤:

php实现zip下载

创建ZIP文件并添加内容

$zip = new ZipArchive();
$filename = "archive.zip";

if ($zip->open($filename, ZipArchive::CREATE) === TRUE) {
    // 添加文件到ZIP
    $zip->addFile('path/to/file1.txt', 'file1.txt');
    $zip->addFile('path/to/file2.jpg', 'images/file2.jpg');

    // 添加字符串内容作为文件
    $zip->addFromString('readme.txt', 'This is a sample text file content');

    $zip->close();
} else {
    exit('无法创建ZIP文件');
}

设置HTTP头并输出ZIP文件

header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
header('Content-Length: ' . filesize($filename));

readfile($filename);

自动删除临时ZIP文件(可选)

unlink($filename); // 下载完成后删除服务器上的临时文件

完整示例代码

$zip = new ZipArchive();
$filename = "download_" . date('Y-m-d') . ".zip";

if ($zip->open($filename, ZipArchive::CREATE) === TRUE) {
    // 添加示例文件
    $zip->addFromString('sample1.txt', '这是第一个示例文件内容');
    $zip->addFromString('sample2.txt', '这是第二个示例文件内容');

    // 添加真实文件
    if (file_exists('path/to/real_file.pdf')) {
        $zip->addFile('path/to/real_file.pdf', 'document.pdf');
    }

    $zip->close();

    // 发送给浏览器
    header('Content-Type: application/zip');
    header('Content-Disposition: attachment; filename="'.$filename.'"');
    header('Content-Length: ' . filesize($filename));
    header("Pragma: no-cache");
    header("Expires: 0");

    readfile($filename);
    unlink($filename); // 删除临时文件
    exit;
} else {
    echo '创建ZIP文件失败';
}

注意事项

确保服务器已安装并启用Zip扩展,可通过phpinfo()查看ZipArchive是否可用

php实现zip下载

对于大文件下载,考虑增加内存限制:

ini_set('memory_limit', '512M');

路径问题需要注意,addFile()使用的是服务器文件系统绝对路径

如果要打包整个目录,需要递归添加目录中的所有文件

标签: phpzip
分享给朋友:

相关文章

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节…

php实现注册登录

php实现注册登录

PHP 注册功能实现 创建数据库表(以 MySQL 为例) CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…

php 实现评论

php 实现评论

实现 PHP 评论功能 数据库设计 创建数据库表存储评论数据,通常包含以下字段: id:评论唯一标识 user_id:用户ID content:评论内容 created_at:评论时间 parent…

php session 实现购物车

php session 实现购物车

PHP Session 实现购物车的方法 初始化 Session 在 PHP 脚本的最开始调用 session_start() 函数,确保会话已启用。这通常在页面的顶部完成。 session_sta…

php实现评论功能

php实现评论功能

数据库设计 创建评论表(示例结构): CREATE TABLE `comments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id`…

php实现抽奖程序

php实现抽奖程序

PHP实现抽奖程序 基本抽奖逻辑 创建一个简单的抽奖程序需要定义奖品、中奖概率及随机选择逻辑。以下是一个基础实现示例: <?php // 奖品配置(奖品名称 => 概率) $prizes…