Php: Как обрабатывать файлы и операции загрузки в одном скрипте? - PullRequest
2 голосов
/ 23 августа 2009

В одном скрипте мне нужно сделать следующее:

  1. создать архив из файлов в каталоге
  2. принудительная загрузка вновь созданного 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'); 

Ответы [ 2 ]

1 голос
/ 23 августа 2009

Создайте zip, а затем перенаправьте пользователя в этот файл.

http://php.net/manual/en/function.header.php

0 голосов
/ 23 августа 2009

Спасибо, JorenB и Гамбо! Проверка texteditor обнаружила некоторые отладочные данные при создании zip, которые не влияют на оригинальный zip, но повреждают данные, отправляемые в браузер при загрузке.

...