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);
});
});
};
这是我的代码:
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);
});
});
};