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