У меня есть сайт PHP с большим количеством мультимедийных файлов, и пользователи должны иметь возможность загружать сразу несколько файлов в формате .zip. Я пытаюсь использовать ZipStream для обслуживания zip на лету с компрессией "store", поэтому мне не нужно создавать zip на сервере, так как некоторые из файлов огромны, и он запрещает сжимать их все.
Это отлично работает, и полученные файлы могут быть открыты каждой почтовой программой, которую я пробовал без ошибок, за исключением программы Unzipping OS X по умолчанию, утилиты архива. Вы дважды щелкните файл .zip, и утилита Archive Utility решит, что она не выглядит реальной почтой и вместо этого сжимается в файл .cpgz.
Использование unzip или ditto в терминале OS X или StuffIt Expander распаковывает файл без проблем, но мне нужна программа по умолчанию (утилита архива) для работы ради наших пользователей.
Какие вещи (флаги и т.д.) в других приемлемых zip файлах могут отключить утилиту Archive Utility, считая, что файл не является допустимым почтовым индексом?
Я прочитал этот вопрос, который, похоже, описывает аналогичную проблему, но у меня нет ни одного бита битового поля общего назначения, чтобы он не был третьим бит, и я уверен, что у меня есть действительный crc-32, потому что, когда я этого не делаю, WinRAR бросает подгонку.
Я рад опубликовать код или ссылку на "плохой" zip файл, если это поможет, но я почти просто использую ZipStream, заставляя его работать в "большом режиме файла" и используя "store" в качестве метод сжатия.
Изменить. Я также попробовал алгоритм сжатия с дефлятом и получил те же результаты, поэтому я не думаю, что это "магазин". Также стоит отметить, что я каждый раз сбрасываю файлы с сервера хранения и отправляю их по мере их поступления, поэтому решение, требующее загрузки всех файлов, прежде чем отправлять что-либо, не будет жизнеспособным (экстремальный пример - 5 ГБ + из 20 МБ файлов. Пользователь не может дождаться, пока все 5 ГБ перейдут на сервер zipping, прежде чем начнется загрузка, или они подумают, что он сломан)
Здесь 140-байтовый, "хранящий" сжатый тестовый zip файл, который проявляет это поведение: http://teknocowboys.com/test.zip