Невозможно изменить размер изображения с помощью резкого

Я использую Multer для загрузки изображений на сервер. И я использую резкое, чтобы изменить размер изображений, а затем отправить клиенту. Но что происходит, когда пользователь загружает изображение, 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}`
            });
           }
        }
    });
});

1 ответ

res.render() вызов зависит от выхода асинхронного toFile() call, так что нужно будет перейти к обратному вызову, что-то вроде:

.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}`
  });
});
Другие вопросы по тегам