无法使用锐利调整图像大小

时间:2018-04-02 12:57:49

标签: node.js multer sharp

我正在使用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 个答案:

答案 0 :(得分:0)

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