Поток zip в PHP

У меня есть Сценарий PHP, который создает zip-файл на лету и вынуждает браузер загрузить zip-файл. Вопрос: разве я мог непосредственно записать zip-файл в поток вывода, который подключен к браузеру пользователя, а не сохраните его как реальный файл на сервере сначала и затем отправьте файл?

Заранее спасибо.

17
задан user371254 20 June 2010 в 04:55
поделиться

2 ответа

Нет, вы должны использовать временный файл, как в здесь .

-1
ответ дан 30 November 2019 в 12:50
поделиться

Если вы используете расширение zip , ответ будет «нет». Метод закрытия в классе ZipArchive - это то, что запускает запись, и, похоже, он хочет записать в файл. Вам , возможно, повезет с использованием Streams для имитации файла, но тогда вы сохраните все это в памяти, и вы все равно не сможете отправить его, пока не закончите добавление файлы.

Если у вас возникли проблемы с тайм-аутом или другие проблемы, когда пользователь ждал создания zip-файла, попробуйте многоступенчатый процесс загрузки:

  1. Пользователь выбирает все, что выбирает для создания zip-файла
  2. Они попадают на страницу состояния, которая использует вызовы ajax для фактического создания zip-файла в фоновом режиме. Симпатичная отвлекающая анимация должна привлечь их внимание.
  3. После того, как фоновые процессы создают zip-архив, пользователь перенаправляется к сценарию, который выполняет загрузку / перенаправление к файлу.
5
ответ дан 30 November 2019 в 12:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: