当前位置:首页 > PHP

php实现zip下载

2026-02-16 17:45:50PHP

PHP实现ZIP下载的方法

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

创建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是否可用

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

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

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

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

php实现zip下载

标签: phpzip
分享给朋友:

相关文章

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERV…

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUT…

php 实现下载

php 实现下载

PHP 实现文件下载的方法 使用 PHP 实现文件下载可以通过设置 HTTP 头信息,强制浏览器将文件作为附件下载而非直接打开。 基本下载实现 $file_path = 'path/to/your…