我正在使用multer将图像上传到服务器。我正在使用sharp调整图像的大小,然后发送到客户端。但是发生的情况是,一旦用户上传了图像,multer将其上传到服务器,夏普甚至调整了它的大小,但是如果同一个用户再次上传,multer上传了新文件,但是夏普并没有调整新上传的图像的大小,而是发送原来的调整过大小的图像。
app.post('/upload',(req,res)=>{
upload(req,res,(err)=>{
if(err){
res.render('picupload',{
msg: err
});
}else{
if(req.file == undefined){
res.render('picupload',{
msg: 'Error: No File selected!'
});
} else{
console.log(req.file);
sharp(`./public/uploads/${req.file.filename}`)
.resize(40,40)
.toFile(`./public/uploads/resize/${req.file.filename}`,(err,info)=>{
if(err) throw err;
console.log(info);
});
res.render(pathjoin13,{
file: `uploads/${req.file.filename}` ,
file1: `uploads/resize/${req.file.filename}`
});
}
}
});
});
res.render()
调用依赖于异步toFile()
调用的输出,因此需要移动到其回调,如下所示:
.toFile(`./public/uploads/resize/${req.file.filename}`,(err,info)=>{
if (err) throw err;
console.log(info);
res.render(pathjoin13,{
file: `uploads/${req.file.filename}` ,
file1: `uploads/resize/${req.file.filename}`
});
});