Node.js 如何将tar目录存储在节点js中的s3上?
使用AWS SDK,我能够存储文件(压缩或未压缩)和压缩目录(使用tar),但不能存储未压缩目录 设置和依赖项:Node.js 如何将tar目录存储在节点js中的s3上?,node.js,amazon-web-services,amazon-s3,stream,aws-sdk,Node.js,Amazon Web Services,Amazon S3,Stream,Aws Sdk,使用AWS SDK,我能够存储文件(压缩或未压缩)和压缩目录(使用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
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 = 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 = 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)
node_modules/aws sdk/lib/s3/managed_upload.js:346
var buf=self.body.read(self.partSize-self.partBuffer.length)||
^
TypeError:undefined不是函数
在ManagedUpload.fillStream(node_modules/aws sdk/lib/s3/managed_upload.js:346:25)
打包。(node_modules/aws sdk/lib/s3/managed_upload.js:167:28)
在Pack.emit(events.js:129:20)
at Pack.\u进程(node\u modules/tar/lib/Pack.js:121:8)
在Pack.end(node_modules/tar/lib/Pack.js:87:8)
在DirReader.onend(stream.js:79:10)
在DirReader.emit(events.js:129:20)
在DirReader.\u read(node\u modules/fstream/lib/dir reader.js:82:10)
在FileReader.onend(node_modules/fstream/lib/dir reader.js:172:12)
在FileReader.emit(events.js:129:20)
我是否需要将tar结果通过管道传输到aws sdk可以处理的东西中,或者什么