0

我创建了一个 zip 文件。但我没有在我的主机中创建任何文件。我想虚拟地创建一个 zip 文件(即临时内存),然后将其下载。我将如何使用 PHP 执行此过程?

4

1 回答 1

1

引用在上一个问题中回答这个问题的荨麻

我遇到了同样的问题,但最终找到了一个有点晦涩的解决方案,并决定在这里分享。

我遇到了 phpmyadmin 附带的很棒的 zip.lib.php/unzip.lib.php 脚本,它们位于“libraries”目录中。

使用 zip.lib.php 对我来说是一种魅力:

require_once(LIBS_DIR . 'zip.lib.php');

... 

//create the zip $zip = new zipfile();

//add files to the zip, passing file contents, not actual files
$zip->addFile($file_content, $file_name);

...

//prepare the proper content type header("Content-type:
application/octet-stream"); header("Content-Disposition: attachment;
filename=my_archive.zip"); header("Content-Description: Files of an
applicant");

//get the zip content and send it back to the browser echo
$zip->file(); 

此脚本允许下载 zip,而无需将文件作为真实文件或将 zip 本身保存为文件。

遗憾的是,此功能不是更通用的 PHP 库的一部分。

这是 phpmyadmin 源中的 zip.lib.php 文件的链接: https ://github.com/phpmyadmin/phpmyadmin/blob/master/libraries/zip.lib.php

确保从 zip.lib.php 的开头删除以下检查,否则脚本将终止:

    if (! defined('PHPMYADMIN')) {
    exit;
}
于 2013-09-21T20:33:20.550 回答