其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

PHP操作ZipArchive实现文件上传下载功能

GG网络技术分享 2025-03-18 16:17 0


在PHP中,ZipArchive 类提供了创建和修改ZIP文件的功能。通过这个类,你可以轻松地实现文件的压缩(上传)和解压缩(下载)功能。以下是使用 ZipArchive 实现文件上传和下载的基本步骤:

文件上传(压缩)

  1. 接收上传的文件:

    • 通过HTML表单接收文件上传,确保表单的 enctype 属性设置为 multipart/form-data。

    • 在PHP端,通过 $_FILES 超全局变量获取上传文件的信息。

  2. 创建ZIP文件:

    • 使用 ZipArchive 创建一个新的ZIP文件。

    • 调用 open 方法,并设置模式为 ZIPARCHIVE::CREATE。

  3. 添加文件到ZIP:

    • 遍历上传的文件数组,使用 addFile 方法将文件添加到ZIP中。

    • 可以指定压缩方式,例如 ZIPARCHIVE::CM_DEFLATE。

  4. 关闭ZIP文件:

    • 完成文件添加后,调用 close 方法关闭ZIP文件。

  5. 保存或输出ZIP文件:

    • 可以选择将ZIP文件保存到服务器,或者直接输出到浏览器供用户下载。

示例代码(文件上传并压缩):

// 检查是否有文件上传

if (isset($_FILES[\'file\']) && $_FILES[\'file\'][\'error\'] == 0) {

// 创建新的ZIP文件

$zip = new ZipArchive();

$zipFileName = \'archive.zip\';

if ($zip->open($zipFileName, ZipArchive::CREATE) === true) {

// 添加文件到ZIP

for ($i = 0; $i < count($_FILES[\'file\'][\'name\']); $i++) {

$fileToCompress = $_FILES[\'file\'][\'tmp_name\'][$i];

$zip->addFile($fileToCompress, $_FILES[\'file\'][\'name\'][$i]);

}

// 关闭ZIP文件

$zip->close();

// 输出ZIP文件供下载

header(\'Content-Description: File Transfer\');

header(\'Content-Type: application/zip\');

header(\'Content-Disposition: attachment; filename=\"\'.basename($zipFileName).\'\"\');

header(\'Expires: 0\');

header(\'Cache-Control: must-revalidate\');

header(\'Pragma: public\');

header(\'Content-Length: \' . filesize($zipFileName));

readfile($zipFileName);

unlink($zipFileName); // 删除临时ZIP文件

exit;

} else {

echo \'Unable to create zip file\';

}

}

文件下载(解压缩)

  1. 读取ZIP文件:

    • 使用 ZipArchive 打开一个已存在的ZIP文件。

    • 调用 open 方法,并设置模式为 ZIPARCHIVE::OPEN。

  2. 提取ZIP文件内容:

    • 遍历ZIP中的文件列表,使用 extractTo 方法将文件解压缩到指定目录。

  3. 关闭ZIP文件:

    • 完成解压缩后,调用 close 方法关闭ZIP文件。

示例代码(文件下载并解压缩):

// 检查是否有ZIP文件指定

if (isset($_GET[\'zipFile\'])) {

$zipFileName = $_GET[\'zipFile\'];

// 指定解压缩目录

$destination = \'./extracted/\';

// 打开ZIP文件

$zip = new ZipArchive();

if ($zip->open($zipFileName) === true) {

// 解压缩ZIP文件到指定目录

$zip->extractTo($destination);

$zip->close();

echo \"ZIP file extracted successfully.\";

} else {

echo \'Unable to open zip file\';

}

}

在使用 ZipArchive 进行文件操作时,要注意文件权限和路径问题,确保PHP脚本有足够的权限读取和写入文件。此外,对于上传的文件,还需要进行安全检查,防止潜在的安全风险。

标签: 解压缩 文件

提交需求或反馈

Demand feedback