2

我有一个用于创建带有图像的 zip 的脚本。它真的很好用!

create_zip($files_to_zip, 'zip/download-'.$id_account.'-'.$time.'.zip');

function create_zip($files = array(),$destination = '',$overwrite = true) {

        if(file_exists($destination) && !$overwrite) { return false; }
        $valid_files = array();
        if(is_array($files)) {
            foreach($files as $file) {
                if(file_exists($file)) {
                    $valid_files[] = $file;
                }
            }
        }
        if(count($valid_files)) {
            $zip = new ZipArchive();
            if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
                return false;
            }
            foreach($valid_files as $file) {
                $zip->addFile($file,$file);
            }
            $zip->close();

            return file_exists($destination);
        }
        else { return false; }
    }

当我下载文件时,它的名字很好zip/download-'.$id_account.'-'.$time.'.zip 但是当我想提取它时,提取文件夹总是命名为files. 结果

请问您有任何想法将我解压缩的文件重命名为另一个名称吗?

非常感谢 !

4

1 回答 1

1

您可以使用此代码创建您的 zip 文件。

这样做

$File = 'path' . time() . '.zip';
$zip = new \ZipArchive();
$res = $zip->open($File, \ZipArchive::CREATE);

if ($res === TRUE) {
    $zip->addFile($filename);
    $zip->close();
}
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=\"" . basename($File) . "\"");
header("Content-Length: " . filesize($File));
header("Pragma: no-cache");
header("Expires: 0");
readfile($File);
header("Connection: close");

在您的情况下,您只是错过了header 部分
只需在您的代码中添加标题部分,它就会为您工作。

于 2017-07-05T10:25:12.440 回答