#php #amazon-s3 #download #zipstream
Вопрос:
может ли кто-нибудь, имеющий опыт работы с потоками zip, объяснить мне, как они должны работать?
Например, у меня есть приложение, которое может редактировать метаданные на фотографиях (добавлять пользовательские ключевые слова, изменять заголовок или описание и т.д.) Но когда я хочу загрузить их с S3, я должен сначала временно загрузить их на сервер, чтобы обновить (изменить) их метаданные (с помощью exiv2).
Для загрузки я попробовал это https://github.com/maennchen/ZipStream-PHP а позже попробовал и это https://github.com/stechstudio/laravel-zipstream но загрузка «зависает» до тех пор, пока все фотографии не будут обработаны (пока цикл не будет завершен), и только в конце отображается диалоговое окно сохранения. Затем, когда вы сохраняете его, он уже загружен, потому что он загрузил его во время этого периода «зависания». Проблема в том, что это выглядит как «задержка», когда пользователь нажимает кнопку загрузки. При работе с небольшим объемом данных это допустимо, но когда я хочу загрузить, например, несколько ГБ, он все равно загружает их, но делает это в фоновом режиме. Когда я открываю вкладку «Сеть», я вижу, что запрос находится на рассмотрении, а столбец «Размер» растет (потому что он загружает файлы), а затем через пару минут (это зависит от скорости загрузки) отображается диалоговое окно сохранения.
Итак, это предложение из https://github.com/stechstudio/laravel-zipstream действительно сбил меня с толку:
Обеспечивает прямой поток загрузки для вашего пользователя. Загрузка zip-файла начинается немедленно, даже если zip-файл все еще создается. Нет необходимости сначала сохранять zip-файл на диск.
Поэтому я хотел спросить, можно ли начать загрузку сразу (после обработки первого файла) или это поведение, как я описал, предназначено для zip-потоков?
Если это возможно, может ли быть так, что интерфейс что-то испортил, поскольку я работаю только на бэкэнде?
Или я делаю что-то не так? Могу ли я изменить или сделать что-то другое, есть ли лучший способ справиться с этим потоком в приложении?
Спасибо