为了账号安全,请及时绑定邮箱和手机立即绑定

收集另一个 PHP 脚本发送的文件附件,并将它们输出为 ZIP 文件夹

收集另一个 PHP 脚本发送的文件附件,并将它们输出为 ZIP 文件夹

PHP
神不在的星期二 2021-06-21 17:05:40
我目前有一个 PHP 脚本,可以根据发票的 ID 号将发票数据导出到 CSV 文件中。该文件是动态生成的,不会保存在服务器上。更具体地说,我正在回显行,并设置以下标题,以便回显出现在文件附件中:header('Content-type: text/plain');header("Content-Disposition: attachment; filename=INV${id}.csv");我可以调用脚本的方式是使用:my_script.php?id=123但是现在,我需要编写一个脚本来获取给定日期的所有发票,获取相应的 CSV 文件,并将它们作为 ZIP 文件下载到客户端。我可以使用我现有的输出一个文件的脚本来做到这一点吗?我在想的是从数据库中获取所有相关发票 ID 的列表(比如 123、456 和 789),然后遍历它们并为每个 ID 调用我的脚本,例如:my_script.php?id=123 //then 456, then 789然后将文件结果保存到一个数组中。到目前为止我的尝试:到目前为止,我尝试根据此答案将一个结果文件保存为变量,但该变量仍然为空(而已经存在的脚本确实返回了一个非空文件):$file = getScriptOutput("my_script.php?id=123");echo $file;function getScriptOutput($path, $print = FALSE){    ob_start();    if( is_readable($path) && $path )    {        include $path;    }    else    {        return FALSE;    }    if( $print == FALSE )        return ob_get_clean();    else        echo ob_get_clean();}所以,这里有两个问题:1 - 如何制作文件数组,其中每个文件都是 PHP 脚本的文件结果(附件)?2 - 如何在 PHP 中将所有这些动态文件合并为一个 ZIP 文件?编辑:建议的副本对压缩部分有帮助,但我需要知道如何获取 PHP 脚本的文件附件(由于存储和安全问题,有没有办法不将文件保存在服务器上?)。
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

好吧,我重新考虑了我的计划,最后我做了以下事情:

对于每个 ID:

  • 阅读来自 http 响应的附件my_script.php?id=123并将其保存到一个变量中,按照这个答案(使用 cURL 和 setting CURLOPT_BINARYTRANSFER => TRUE

  • 创建一个临时文件并在其中写入变量的数据(典型的fopen并且fwrite完成了工作)

  • 根据@DigitalJedi 的回答,将文件添加到 ZIP 存档中

  • 发送 ZIP 后,使用unlink("filename.csv").


查看完整回答
反对 回复 2021-06-25
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信