gpt4 book ai didi

php - 使用 PHP 操作内存中的存档(无需在磁盘上创建临时文件)

转载 作者:IT王子 更新时间:2023-10-28 23:28:58 25 4
gpt4 key购买 nike

我正在尝试在 PHP 中即时生成存档并立即将其发送给用户(不保存)。我认为没有必要在磁盘上创建文件,因为我发送的数据无论如何都不是持久的,但是,在搜索网络时,我无法找到方法。我也不关心文件格式。

所以,问题是:

是否可以在 php 脚本中创建和操作内存中的文件存档,而无需在此过程中创建临时文件?

最佳答案

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

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

使用 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/RELEASE_4_5_5_1/libraries/zip.lib.php

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

if (! defined('PHPMYADMIN')) {
exit;
}

更新:该代码也可用于 CodeIgniter 项目: https://github.com/patricksavalle/CodeIgniter/blob/439ac3a87a448ae6c2cbae0890c9f672efcae32d/system/helpers/zip_helper.php

关于php - 使用 PHP 操作内存中的存档(无需在磁盘上创建临时文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1189019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com