Передать несколько файлов в zip-файл - PullRequest
2 голосов
/ 10 октября 2011

У меня есть несколько файлов в хранилище документов GridFS, и я хотел бы передать эти данные в zip-файл через stdin в NodeJS. Так что в итоге я получу zip-файл, содержащий все эти файлы.

Теперь мой вопрос: как я могу дать файлам правильное имя файла внутри zip-файла . Я думаю, что мне нужно эмулировать / подделать заголовок файла, содержащий имя файла?

Любая помощь приветствуется!

Спасибо

1 Ответ

4 голосов
/ 10 октября 2011

У меня были проблемы при написании zip-файлов с Node.js не так давно.Я закончил тем, что делал что-то похожее на то, что описано в Zip-архивах в node.js

Я не могу помочь вам напрямую с вашей проблемой, но, по крайней мере, я надеюсь, что могу указать на некоторыевещи:

  • Не пытайтесь использовать нод-архив.Даже если в описании говорится, что он позволяет создавать zip-файлы, в тот момент, когда я прочитал исходный код (поскольку документация не существует), я понял, что это просто ложь.Это только предоставляет методы для чтения.
  • Использование zip для запуска процесса, как рекомендовано для указанной ссылки, кажется наилучшим способом.Что-то, что сработало бы, - это копировать файлы в локальную папку с любым именем, а затем вызывать команду zip, просто чтобы потом удалить файлы.
  • Другой вариант, который кажется нормальным, - это использовать zipper (https://github.com/rubenv/zipper, хотя лучше просто использовать npm).Причина, по которой я на самом деле не желаю его использовать, заключается в том, что гибкости не так много, кажется, что это было сделано за день, и он не был изменен с момента первого коммита, поэтому я не уверен, что он получит обслуживание(конечно, вы могли бы просто раскошелиться на это ...).

Клянусь, в тот день, когда у меня будут целые свободные выходные без работы, я напишу чертов модуль, который сделает это настолько полно, насколько это возможно.Глупо, что нет и не должно быть столько борьбы.blablablarant.

Редактировать: Не уверен, был ли он там раньше, но сейчас я использую модуль node-compress (также использующий gzippo).Работает нормально.

...