【发布时间】:2017-06-13 15:53:08
【问题描述】:
这个node.js代码块的目的是下载一张图片,调整大小,把调整后的图片上传到s3,然后把原图上传到s3。
非工作代码:
http.get(url, function onResponse(res) {
gm(res)
.resize(250,250)
.stream(function(err, stdout, stderr){
if(debug)console.log("Resized "+key+" and created "+key+"_thumb.jpg");
if(err){
console.log("Error resizing image. Message:",err);
}
else{
var data = {
Bucket: 'bucket-name',
Key: key+"_thumb.jpg",
Body: stdout,
ACL: "public-read",
ContentType:"image/jpeg"
};
s3 = new aws.S3()
s3.upload(data, function(err, resp) {
if(debug)console.log(resp);
});
s3=null;
stdout=null;
data=null;
}
});
s3 = new aws.S3()
s3.upload({Bucket:"bucket-name", Key: key+".jpg", ACL:"public-read", ContentType:"image/jpeg" ,Body: res}, function(err,data){
if(debug)console.log(data);
data=null;
});
s3=null;
res=null;
});
问题是这个代码块没有按预期运行。在上面的代码中s3上传的缩略图始终是一个空文件。
但是,如果我删除第二个 s3 上传请求,缩略图会神奇地开始正确上传。
工作代码:
http.get(url, function onResponse(res) {
gm(res)
.resize(250,250)
.stream(function(err, stdout, stderr){
if(debug)console.log("Resized "+key+" and created "+key+"_thumb.jpg");
if(err){
console.log("Error resizing image. Message:",err);
}
else{
var data = {
Bucket: 'bucket-name',
Key: key+"_thumb.jpg",
Body: stdout,
ACL: "public-read",
ContentType:"image/jpeg"
};
s3 = new aws.S3()
s3.upload(data, function(err, resp) {
if(debug)console.log(resp);
});
s3=null;
stdout=null;
data=null;
}
});
res=null;
});
为什么我可以在第二个示例中上传缩略图,但不能在第一个示例中上传?
【问题讨论】:
-
好的,所以我认为解决方案可能与这个问题有关:stackoverflow.com/questions/19553837/…
标签: node.js gm aws-sdk-nodejs