首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环中的JSZip?

循环中的JSZip?
EN

Stack Overflow用户
提问于 2018-11-05 06:29:44
回答 2查看 545关注 0票数 1

有没有可能用循环中的JSZip创建真正的压缩文件夹和文件,每个元素一个?如果是这样的话,是怎么做的?

如下所示:

代码语言:javascript
复制
var JSZip = require("jszip");
const saveAs = require('file-saver');
var fs = require("fs");

for(i = 0; i > 5; i++){
    var zip = new JSZip();
    zip.folder(i).file(i+".txt", i);

    zip
    .generateNodeStream({type:'nodebuffer',streamFiles:true})
    .pipe(fs.createWriteStream('Zipped Projects.zip'))
    .on('finish', function () {
        console.log("Zipped Projects.zip written.");
    })
}

在循环之外,将在当前目录中使用预期内容创建一个实际的zip文件夹。在循环中,什么都不会发生,甚至日志也不会。

EN

回答 2

Stack Overflow用户

发布于 2018-11-05 06:37:08

如果我正确理解了你的问题,那么这个问题是由每次循环迭代创建新的zip对象引起的。

也许您可以考虑进行以下调整来解决此问题:

代码语言:javascript
复制
var JSZip = require("jszip");
const saveAs = require('file-saver');
var fs = require("fs");

// Create the single zip object that will be populated
// during the for loop
var zip = new JSZip();

// Populate the zip object with text files per iteration.
// Make sure you update the loop logic to use "i < 5"
for(var i = 0; i < 5; i++){
    zip.folder(i).file(i+".txt", i);
}

// Now that the zip object has been populated, write it to
// disk
zip
.generateNodeStream({type:'nodebuffer',streamFiles:true})
.pipe(fs.createWriteStream('Zipped Projects.zip'))
.on('finish', function () {
    console.log("Zipped Projects.zip written.");
})

希望这能有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2018-11-05 08:51:59

代码语言:javascript
复制
var JSZip = require("jszip");
const saveAs = require('file-saver');
var fs = require("fs");

var asanaProjects = require("C:/Users/GabrielRivera/Documents/asana/New Projects JSON.json");

async function createProjectZips() {

    var zip = new JSZip();

    asanaProjects.map((project, index, array) => {

        zip.file(project.name+' - '+index+'.json', JSON.stringify(project));        
    })

    zip
        .generateNodeStream({type:'nodebuffer',streamFiles:true})
        .pipe(fs.createWriteStream('Zipped Projects.zip'))
        .on('finish', function () {
        //console.log("Zipped Projects.zip written.");
        })
}

createProjectZips()
.then(() => {
})
.catch(err=>console.log(err))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53146156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档