Разбейте zip-файл на отдельные части - PullRequest
0 голосов
/ 10 марта 2011

Я пытаюсь сделать следующее:

Я получаю эти zip-файлы от клиентов, которые в целом имеют размер 1,5 ГБ.Все они включают только фотографии.Мне нужно превратить их в файлы по 100 МБ, чтобы загрузить на свой сервер.Проблема в том, что, если я сломаю свой 1,5-гигабайтный zip-файл, мне нужно повторно присоединить их все, если мне понадобится один.

Когда я разбиваю 1,5-гигабайтный zip-файл на 100-мегабайтный zip-файл, мне нужно, чтобы 100-мегабайтный файл действовал как отдельный новый файл, чтобы сервер распаковывал его и загружал изображения в базу данных.Я искал эту проблему, но большинство потоков о том, как разделить ZIP-файл.Это частично то, что я хочу сделать, и я могу сделать это сейчас, но мне также нужны эти маленькие кусочки, чтобы можно было разархивировать самостоятельно.Можно ли разбить zip-файл на более мелкие части, которые будут действовать как новые, автономные zip-файлы?

Спасибо.

Ответы [ 2 ]

1 голос
/ 30 марта 2012

У меня такой же вопрос. Я думаю, что разархивировать в оболочке Linux не может обрабатывать файлы ZIP размером более 1 ГБ, и мне нужно разархивировать их без присмотра в безголовом NAS. Сейчас я распаковываю все на рабочем столе HD, выбираю файлы, пока они почти не достигают 1 ГБ, архивирую и удаляю их, затем выбираю следующий набор файлов, пока я не достигну 1 ГБ.

0 голосов
/ 28 июля 2011

Ваш ответ не ясен, но я постараюсь ответить на него, основываясь на моем понимании вашей дилеммы.

Вопросы * * 1003 Почему размер файла должен быть ограничен? Ограничивающим фактором является передача на сервер? Может ли приложение (на сервере) обрабатывать файлы определенного размера? Можно ли изменить процесс так, чтобы фрагменты файла изображения можно было повторно объединить на сервере перед обработкой? Какие операционные системы используются на клиенте и сервере? У вас есть доступ к серверу? Несколько вариантов

  • Используйте imagemagick , чтобы уменьшить файлы, чтобы они соответствовали ограничениям размера файла

  • В Linux / Mac это сделать довольно просто:

    1. split -b 1m my_large_image.jpg (для работы с двоичными файлами вам нужен параметр b)
    2. Сжать каждый файл в отдельный zip
    3. Загрузить на сервер
    4. Распакуйте
    5. Объединить фрагменты обратно в файл изображения:

    cat xaa xab xac xad (etc) > my_large_image.jpg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...