节点js - fs.readFile& fs.writeStream

时间:2014-08-29 08:52:17

标签: node.js zip fs

我正在编写一个图库系统,该系统目前在页面上显示照片列表,然后为用户提供下载整个图库的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在一起。有人可以解释我会怎么做吗?

提前感谢您的帮助。

0 个答案:

没有答案