Php:Как управлять обработкой файлов и операциями загрузки в одном скрипте?

StackOverflow https://stackoverflow.com/questions/1318254

  •  19-09-2019
  •  | 
  •  

Вопрос

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

  1. создайте zip-файл из файлов в каталоге
  2. принудительно загрузите только что созданный zip-файл

Моя проблема в том, что всякий раз, когда я пытаюсь сделать это с помощью одного скрипта, загруженный 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'); 
Это было полезно?

Решение 2

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top