【发布时间】:2022-10-17 19:56:22
【问题描述】:
我有一个这样的 multer 中间件。我有一个设置表,其中有上传大小限制。 get size limit 是一个异步函数,它从这个模型中获取数据。但我不能在 multer 文件大小中使用它。因为它需要在它后面等待。 我能做些什么? 我想在设置中设置限制大小
const multer = require("multer");
const SettingModel = require("../../models/Setting");
const SequelizeService = require("../app/sequelize/sequelize.service");
let Setting = new SequelizeService(SettingModel);
async function getSizeLimit() {
let setting = await Setting.findOne({ raw: true });
return 1024 * 1024 * setting.sizeLimit;
}
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "./uploads/");
},
filename: function (req, file, cb) {
cb(null, file.originalname.replace(/\s+/g, ""));
},
});
const fileFilter = (req, file, cb) => {
// let response = new Response();
if (
file.mimetype === "image/jpeg" ||
file.mimetype === "image/png" ||
file.mimetype === "image/webp"
) {
cb(null, true);
} else {
cb(new Error("Not an image! Please upload an image.", 400), false);
}
};
exports.upload = multer({
storage: storage,
limits: {
fileSize: getSizeLimit(),
},
fileFilter: fileFilter,
});
【问题讨论】: