Node.js 使用 Imagemin 进行文件压缩的​​ Multer

Node.js Multer with Imagemin for file compression

这是我的代码:

const imagemin=require('imagemin');
const imageminMozjpeg = require('imagemin-mozjpeg');
const multer=require('multer');
const upload=multer({storage:storage});
var imageUpload=upload.single('file');
var storage=multer.diskStorage(
{
    destination:function(req,file,cb) 
    {
        cb(null,'./tempuploads/')
    },
    filename:function(req, file, cb) 
    {
        cb(null,file.originalname)
    }
});
exports.filecompressor=async(req,res)=>
{
    imageUpload(req, res, function(err) 
    {
        let filetoupload=req.file;
        let filename=filetoupload.originalname;
        if(err)
        {
            console.log(err)
        }
        let temppath="./tempuploads/"+filename;
        imagemin([temppath],
        {
            destination: './cachedimages/',
            plugins:[imageminMozjpeg({quality: 50})]
        }).then(result=>
        {
            console.log(result)
        });
    });
};

我想要 imageUpload(req, res, function(err){});return temppath 以便我可以在它之外使用 imagemin() 函数并向它添加 await。

有人可以帮帮我吗??

您可以将 imageUpload 回调转换为 Promise,例如:

exports.filecompressor = async (req, res) => {
  return new Promise((resolve, reject) => {
    imageUpload(req, res, function (err) {
      let filetoupload = req.file;
      let filename = filetoupload.originalname;
      if (err) {
        console.log(err);
        return reject(err);
      }
      let temppath = "./tempuploads/" + filename;
      resolve(temppath);
    });
  });
};