【发布时间】:2015-11-07 05:26:16
【问题描述】:
我正在尝试使用 Amazon 的 S3 服务,我设法将 GZipped 文件上传到我的存储桶,但我无法检索它们。我尝试使用我找到的代码示例here,当我上传文件时一切正常,但我无法下载它们。 这是我的上传代码:
var s3 = new AWS.S3();
s3.headBucket({Bucket: bucketName}, function (err) {
if (err) s3.createBucket({Bucket: bucketName}, cb);
var body = fs.createReadStream(file).pipe(zlib.createGzip());
s3.upload({Bucket: bucketName, Key: key, Body: body}).send(cb);
});
这是我的下载代码:
var s3 = new AWS.S3();
var params = {Bucket: bucketName, Key: key};
var outFile = require('fs').createWriteStream(file);
s3.getObject(params).createReadStream().pipe(zlib.createGunzip()).pipe(outFile);
但我在最后一行得到error throw new Error('Cannot switch to old mode now.');。
而且我不知道如何修复它,我正在使用节点 0.10.25(我无法更改它)。
所以我尝试使用这个:
var params = {Bucket: bucketName, Key: key};
s3.getObject(params, function(err, data) {
var outFile = require('fs').createWriteStream(file);
var read = AWS.util.buffer.toStream(data.Body);
read.pipe(zlib.createGzip()).pipe(outFile);
read.on('end', function(){cb();});
});
但我经常收到错误 104(输入意外结束)。
有人有什么想法吗?
【问题讨论】:
标签: javascript node.js amazon-web-services amazon-s3