javascript - 如何设置字段名称以上传文件单/数组 Multer NodeJs
问题描述
我有一个使用 multer 和 sharp 在 nodejs 中上传图像的代码。但我想问如何在第 19 行设置动态数组名称?我想从 nodejs 路由中设置该数组名称,因为我在 mongodb 集合中的字段名称在每个集合中都不同。
这是我的中间件上传代码:
const multer = require("multer");
const sharp = require("sharp");
const multerStorage = multer.memoryStorage();
const multerFilter = (req, file, cb) => {
if (file.mimetype.startsWith("image")) {
cb(null, true);
} else {
cb("Please upload only images.", false);
}
};
const upload = multer({
storage: multerStorage,
fileFilter: multerFilter
});
const uploadFiles = upload.array("images", 10); //Change this 'images' name from route
const uploadImages = (req, res, next) => {
uploadFiles(req, res, err => {
if (err instanceof multer.MulterError) {
if (err.code === "LIMIT_UNEXPECTED_FILE") {
return res.send("Too many files to upload.");
}
} else if (err) {
return res.send(err);
}
next();
});
};
const resizeImages = async (req, res, next) => {
if (!req.files) return next();
req.body.images = [];
await Promise.all(
req.files.map(async file => {
const filename = file.originalname.replace(/\..+$/, "");
const newFilename = `cariboss-${filename}-${Date.now()}.jpeg`;
await sharp(file.buffer)
.resize(640, 320)
.toFormat("jpeg")
.jpeg({ quality: 90 })
.toFile(`uploads/${newFilename}`);
req.body.images.push(newFilename);
})
);
next();
};
const getResult = async (req, res) => {
if (req.body.images.length <= 0) {
return res.send(`You must select at least 1 image.`);
}
const images = req.body.images
.map(image => "" + image + "")
.join("");
return res.send(`Images were uploaded:${images}`);
};
module.exports = {
uploadImages: uploadImages,
resizeImages: resizeImages,
getResult: getResult
};
我的路线代码:
module.exports = app => {
const articles = require("../controllers/articles.controller.js");
const upload = require("../middlewares/upload");
var router = require("express").Router();
router.post("/", upload.uploadImages, upload.resizeImages, upload.getResult, articles.create);
app.use("/api/article", verifyToken, router);
};
我已经在互联网上搜索了解决方案,但什么也没有。谢谢你的帮助先生。
解决方案
推荐阅读
- excel - 在特定列中查找最后使用的单元格并用范围包围
- docker - kafka-connect-jdbc 源连接器OOM
- java - 我的表格中有 18 行,表格已添加到面板中,但我想显示最多 10 行,其余的应该是可滚动的
- cas - CAS 5 版本的 deployerConfigContext
- uwp - 使用 ReactiveUI 包的通用 Windows 应用程序无法在发布模式下构建
- javascript - 如何从多个子组件中获取表单值?
- reactjs - Javascript React:推送到 useState 中的数组
- multithreading - 如何在Queue中实现并发
- python - 需要从基于字符串的文本文件中查找动态变化的整数
- mongodb - 如何检查mongodb数据中是否存在字段