yaNastia
@yaNastia

Как можно сгенерировать zip файл с нескольких csv, без использования библиотек?

Привет, есть функция с помощью которой, я генерирую csv файлы, но как можно сгенерировать zip с нескольких csv файлов, без использования сторонних библиотек?

const obj = {
data: [
{
count: 391,
endTime: "2020-06-22T20:20:16.437Z",
severity: "critical",
startTime: "2020-06-21T20:19:19.503Z",
tileTitle: "Event Count"
},
{
count: 772,
endTime: "2020-06-22T20:20:16.437Z",
severity: "error",
startTime: "2020-06-21T20:19:19.503Z",
tileTitle: "Event Count"
}],
fileName: "EventCountDataToExport.csv",
friendlyHeaderNames: ["Tile Title", "Severity", "Count", "Start Time",  "End Time"]
}

 function exportToFile(options) {
    const { data, fileName, friendlyHeaderNames } = options
    const content = [
        friendlyHeaderNames.join(","),
        ...data.map(item => Object.values(item).join(","))
    ]
        .join("\n")
        .replace(/(^\[)|(\]$)/gm, "")
    const file = new File([content], fileName, { type: "text/csv" })
    const element = window.document.createElement("a")
    element.href = window.URL.createObjectURL(file)
    element.download = fileName
    element.click()
}

exportToFile(obj)
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
С целью сжатия или обусфакции файла? Если с целью сжатия, то это нетривиальная задача. В ZIP используют разные алгоритмы сжатия без потерь, судя по вики, чаще всего это Deflate, его реализацию можно подглядеть в zlib https://github.com/madler/zlib/blob/master/deflate.c посмотрите сколько там строк, и решите, нужно ли вам тратить столько времени. Лучше воспользуйтесь библиотеками JSZip или тем же zlib на ноде.
Ответ написан
@barbeer
Если нужно просто упаковать их в один файл без сжатия, то это относительно просто. Можно посмотреть сюда:
https://habr.com/ru/post/471066/
Это, конечно, php, а не js, но в целом структура zip-файлов описана, принципы их создания - тоже. Единственный сложный момент - надо считать crc для данных, больше ничего реально сложного, вроде бы, нету.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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