0

我正在使用 multer 将图像上传到服务器。我正在使用Sharp调整图像大小,然后发送给客户端。但是,一旦用户上传图像,multer 将其上传到服务器并调整大小,即使同一用户再次上传,multer 也会上传新文件,但Sharp 不会调整新上传图像的大小,而是发送原始调整大小的图像。

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

1 回答 1

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}`
  });
});
于 2018-04-09T18:14:08.427 回答