如何从zip下载中排除文件?

时间:2015-04-08 12:11:32

标签: php file download zip

目前我使用此代码下载zip文件:

<?php
    $weborder = $_POST['weborder'];
    $printlocation = $_POST['print'];

$file = 'z:\Backup\\'.$printlocation.'\\'.$weborder.'.zip';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
else
{
    echo ":(";
}
?>

zip文件包含4个文件。我现在遇到的问题是不应该下载3个文件。我想知道是否有一种简单的方法可以选择不下载哪些文件。

1 个答案:

答案 0 :(得分:1)

不幸的是,没有办法选择性地下载zip。 你应该重新包装你的zip存档包含你想要下载的文件。


以下是一些相关问题,只是为了不在这里复制它们:

您需要做的是提取您要提供的文件以供下载。 你可以通过使用“selective”解压缩来实现这个目的......

$zip->extractTo('/some/dir/', ['number_one.file', 'some_other.file']); // or single file in your case

...然后打包它们,并为新创建的zip存档提供您想要的文件。

有关如何执行此操作的详细信息,请参阅上面的相关链接。


UPD:我要提到在脚本中直接使用用户输入不是一个好习惯。这是潜在的安全漏洞。