我如何在节点js s3上存储一个tar目录?

使用AWS开发工具包,我可以存储文件(压缩或未压缩)和压缩目录(使用tar),但不能解压缩目录。

安装程序和依赖关系:

var aws = require('aws-sdk'), s3 = new aws.S3(), fs = require('fs'), fstream = require('fstream'), zlib = require('zlib'), tar = require('tar'), key = 'test', bucket = 'mybucket'; 

修正了上传代码:

 var params = { Bucket: bucket, Key: key, Body: body }; s3.upload(params) .send(function(err, data) { console.log("data:", data); } }); 

存储文件,未压缩:

 body = fs.createReadStream('/var/www/file.txt'); 

存储文件,压缩:

 body = fs.createReadStream('/var/www/file.txt') .pipe(zlib.createGzip()); 

存储目录,压缩:

 body = fstream.Reader({type: "Directory", path: "/var/www"}) .pipe(tar.Pack()) .pipe(zlib.Gzip()); 

存储目录,未压缩(不起作用):

 body = fstream.Reader({type: "Directory", path: "/var/www"}) .pipe(tar.Pack()); 

而我得到的错误:

 node_modules/aws-sdk/lib/s3/managed_upload.js:346 var buf = self.body.read(self.partSize - self.partBuffer.length) || ^ TypeError: undefined is not a function at ManagedUpload.fillStream (node_modules/aws-sdk/lib/s3/managed_upload.js:346:25) at Pack.<anonymous> (node_modules/aws-sdk/lib/s3/managed_upload.js:167:28) at Pack.emit (events.js:129:20) at Pack._process (node_modules/tar/lib/pack.js:121:8) at Pack.end (node_modules/tar/lib/pack.js:87:8) at DirReader.onend (stream.js:79:10) at DirReader.emit (events.js:129:20) at DirReader._read (node_modules/fstream/lib/dir-reader.js:82:10) at FileReader.onend (node_modules/fstream/lib/dir-reader.js:172:12) at FileReader.emit (events.js:129:20) 

我是否需要将tar结果导入aws sdk可以处理的内容,或者是什么?