提问者:小点点

无法使用夏普调整图像大小


我正在使用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}`
            });
           }
        }
    });
});

共1个答案

匿名用户

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}`
  });
});