Node.js 节点js-fs.readFile&;fs.writeStream

Node.js 节点js-fs.readFile&;fs.writeStream,node.js,zip,fs,Node.js,Zip,Fs,我正在编写一个图库系统,该系统当前在页面上显示照片列表,然后让用户可以选择下载整个图库的zip。如果这个zip文件还不存在,它是动态生成的,但在当前状态下生成它可能需要一段时间(有时大约需要一分钟)。这是我目前掌握的代码: if (fs.existsSync(zipPath)) { callback(downloadPath); } else { socket.emit('preparingZip'); fs.readdir(galle

我正在编写一个图库系统,该系统当前在页面上显示照片列表,然后让用户可以选择下载整个图库的zip。如果这个zip文件还不存在,它是动态生成的,但在当前状态下生成它可能需要一段时间(有时大约需要一分钟)。这是我目前掌握的代码:

if (fs.existsSync(zipPath)) {
        callback(downloadPath);
    } else {

        socket.emit('preparingZip');

        fs.readdir(galleryPath, function(err, listOfPhotos) {

            async.each(listOfPhotos, function(photo, cb) {

                if (photo != 'thumbnails') {

                    var photoPath = galleryPath+'/'+photo;

                    fs.readFile(photoPath, function(err, data) {
                        if (err) { console.log(err); }
                        console.log(photoPath);
                        zip.file(photo, data);
                        cb();
                    });

                } else {
                    cb();
                }

            }, function(err) {
                if (err) { console.log(err); }

                var data = zip.generate({base64:false,compression:'DEFLATE'});

                fs.writeFile(zipPath, data, 'binary', function(err) {
                    if (err) { console.log(err); }
                    callback(downloadPath);
                });

            });

        });
    }
我已经读到在这个例子中不应该使用fs.writeFile,我应该使用fs.writeStream来提高效率,但是我找不到任何关于如何同时使用fs.readFile和fs.writeStream的例子。有人能解释一下我会怎么做吗


提前感谢您的帮助。

最终找到了一个名为zip stream的模块,该模块非常有效(尽管文档并不精彩)。