0
此處的代碼旨在將以multipart/form-data(文件已成功在多方模塊中解析的文件)上載的圖像保存到Amazon S3,然後獲取所有圖像圖像桶URL並將其保存到mongodb中的imageUrl數組字段。但是,imageUrl總是空的。 我發現在loopwithcb函數中imageUrl具有正確的URL。 在保存後的回調函數中,imageUrl爲空。我認爲這是異步的問題,但仍然無法弄清楚。任何想法都會有幫助。如何在使用nodejs在S3中保存所有圖像後獲取網址
//save images to S3
var i=-1;
var imageUrl =[];
function loopwithcb(afterSave){
Object.keys(files.files).forEach(function(){
i=i+1;
var myFile = files.files[i];
var fileName = Date.now()+myFile.originalFilename;
s3Client.upload({
Bucket: bucket,
Key: fileName,
ACL: 'public-read',
Body: fs.createReadStream(myFile.path)
//ContentLength: part.byteCount
}, function (err, data) {
if (err) {
//handle error
} else {
//handle upload complete
var s3url = "https://s3.amazonaws.com/" + bucket + '/' + fileName;
imageUrl.push(s3url);
console.log('imageurl:'+ imageUrl);
//delete the temp file
fs.unlink(myFile.path);
console.log('url:' + imageUrl);
}
});
});
afterSave();
}
function afterSave(){
console.log('i:'+ i);
console.log('outside print imageurl:'+ imageUrl);
Listing.create({
title : fields.ltitle,
type : 'newlist',
description : fields.lbody,
image : imageUrl
}, function (err, small) {
if (err) return handleError(err);
// saved!
console.log(small);
console.log('listingId:' + ObjectId(small._id).valueOf());
//res.json(small);
});
}
loopwithcb(afterSave); //call back