0

我在 PHP 中创建一个压缩文件,如下所示:

$nameFile = $_FILES['file']['name'];
$tmpName  = $_FILES['file']['tmp_name'];

$fp      = fopen($tmpName, 'r');
$containFile = fread($fp, filesize($tmpName));
fclose($fp);

$zip = new ZipArchive();

$fileconpress = "uploads/".$nameFile.".zip";

$conpress = $zip->open($fileconpress, ZIPARCHIVE::CREATE);
if ($conpress)
{
$zip->addFromString($nameFile, $containFile);
$zip->close();

一切正常。在另一个页面中,我列出了我文件夹中的所有压缩文件以及这些压缩文件中的所有子文件(通过我的数据库获取列表)。

我希望能够下载压缩文件中的 1 个孩子。如何打开服务器上的压缩文件并让用户下载其中一个?

我检查了 php.net 并找到了 zip_read 和 zip_open 但他们没有给出太多的例子,我很难理解它是如何工作的。

4

2 回答 2

1

php 文档中有很多示例:http: //php.net/manual/en/function.zip-open.php

只需打开文件,将其解压缩到一个目录,然后将其作为您想要的服务器。这个设置让我怀疑你是否应该在服务器上准备好解压缩的文件,但这是你的选择。

于 2013-07-23T15:24:49.443 回答
1
$zip = new ZipArchive;
$res = $zip->open("uploads/".$parent.".zip");
if ($res === TRUE) {
    $zip->extractTo("uploads/".$parent);
    $zip->close();
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.$child.'');
    header('Pragma: no-cache');
    readfile("uploads/".$parent."/".$child);
} else {
    echo 'failed, code:' . $res;
}
于 2013-07-23T15:39:16.550 回答