PHP:如何处理单个脚本中的文件处理和下载操作?
问题描述:
在一个脚本,我需要做到以下几点:PHP:如何处理单个脚本中的文件处理和下载操作?
- 创建一个ZIP出文件的目录中
- 力新创建的压缩的下载
我的问题是,每当我尝试在单个脚本中执行此操作时,下载的zip文件已损坏(虽然文件大小不错)。如果我在两个独立的脚本调用中触发 进程,则下载的zip文件可以正常使用。
我想问题是压缩保存到文件进程并不完全是 在下载开始之前完成。奇怪的是,它并没有解决问题 之间插入睡眠(3)...下面的代码大纲。
如何确保zip文件在强制下载开始之前完全完成?
祺/乔纳斯
// 1. create a zip
$createZipFile = new CreateZipFile('temp.zip');
$createZipFile->zipDirectory('temp/', '.');
$createZipFile->saveZipFile();
sleep(3); // <-- Doesn't matter!
// 2. force zip download
$fileServer = new FileServer();
// Line below gives a corrupted zip when run in same script as 1.
$fileServer->forzeDownload('temp.zip');
答
谢谢JorenB和浓汤! texteditor检查发现一些调试输出在zip创建中,不会影响标准zip,但是会在下载时破坏发送到浏览器的数据。
答
创建ZIP,然后将用户重定向到该文件。
尝试在文本编辑器中打开损坏的zip文件 - 它可能会揭示出现问题的地方。有可能它只包含一个404页(显然这不是一个格式正确的zip文件)。 – JorenB 2009-08-23 10:43:27
您可能会有一些额外的输出(可能是PHP块之前的单个空格/换行符),这会损坏您的数据。 – Gumbo 2009-08-23 10:46:19