Nan*_*ane 6 javascript foreach amazon-s3 node.js express
我是 node js/express 的新手。我正在尝试使用 cloudfront 和 s3 存储桶制作多个图像上传应用程序。我想为我使用 socket io 的用户显示进度条。照片上传进度将在循环中。但是问题是当照片上传开始时它总是显示 100% 完成而不是从一开始。不要认为上传完成了它不是,我的文件是 20MB。我不知道发生了什么我错过了什么
这是我的代码
app.post('/posttodb',(req,res) => {
let isLoggedIn = req.cookies['check'];
let token = req.cookies['peace'];
const bucketName = 'awsBucketName';
console.log(isLoggedIn);
if(isLoggedIn == "true"){
if(token){
jwt.verify(token,JWTPASS,(err,decode) => {
if(err){
console.log(err)
res.json({error:true})
}else{
console.log('========================>',decode)
let postOwneranme = decode.user.username;
let postTags = req.body.data.postTags;
let photosBlob = req.body.data.photos;
let postId = req.body.data.postId;
let nepostAwsPhots = [];
let OwnerPic = decode.user.propic;
let postOwnerFullName = decode.user.name;
let isMature = req.body.data.isMature;
let postThumbUrl = req.body.data.thumnailUrl;
let time = new Date();
let tagSlug = req.body.data.tagSlug;
function savetodb() {
console.log('Inserting all into DB');
r.connect({db:'image'}).then(conn => {
r.table('posts').insert({postId:postId,username:postOwneranme,tag:postTags,postUrlsAndCaptions:nepostAwsPhots,comments:[],postOwnerPic:OwnerPic,likesCount:0,whoLikedIt:[],views:0,postedTime:time,postOwnerFullName:postOwnerFullName,isMature:isMature,thumNailUrl:postThumbUrl,tagSlug:tagSlug}).run(conn).then(response => {
console.log(response)
if(response.inserted > 0){
console.log('Done Bro')
res.json({okva:true,postId:postId,username:postOwneranme})
}else{
res.json({okva:false})
}
})
})
}
function seemsToHaveNetworkProblem() {
res.json({okva:false,message:"Seems To Have Network Problem"})
}
forEachOf(photosBlob,(value,key,callback) => {
console.log(value.id);
let newImageUriWillBe = value.blobData;
let newImageNamewillBe = value.id;
let imageType = value.ImageType;
let caption = value.caption;
console.log(imageType)
let buf = new Buffer(newImageUriWillBe.replace(/^data:image\/\w+;base64,/, ""),'base64');
s3.createBucket({Bucket:bucketName},() => {
let params = {Bucket: bucketName, Key: postOwneranme+'/'+newImageNamewillBe, Body: buf,ContentType:imageType,ContentLength:buf.length,ACL:'public-read'};
s3.upload(params,(err,data) => {
if(err){
callback(err);
}else{
// console.log("Successfully uploaded data to " + bucketName + "/" + id);
// console.log(`https://s3.amazonaws.com/${bucketName}/${username}/${id}`);
let response = {
picUrl:`https://s3.amazonaws.com/${bucketName}/${postOwneranme}/${newImageNamewillBe}`,
cation:caption
}
nepostAwsPhots.push(response);
callback()
// console.log(nepostAwsPhots)
res.writeHead(200, {'content-type': 'text/plain'});
res.end('Ok');
}
})
//Problem Comes here
.on('httpUploadProgress', function(evt) {
let per = Math.round((evt.loaded * 100) / evt.total)
console.log('Progress:',per);
Socket.emit('Scoket',{proccesing:per})
})
});
},(err) => {
if(err){
console.log("From Node Loop error",err);
seemsToHaveNetworkProblem()
}else {
savetodb()
}
})
}
})
}else {
res.json({error:true});
console.log('OMG')
}
}else{
res.json({error:true});
console.log('OMG')
}
});
Run Code Online (Sandbox Code Playgroud)
首先检查您是否已将库更新 到最新版本,然后尝试使用以下代码修改您的代码:
.on('httpUploadProgress',function(progress) {
console.log(Math.round(progress.loaded/progress.total*100)+ '% done');
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
480 次 |
| 最近记录: |