省流
在使用multer()函数时除了storage{}对象还需要多传一个fileFilter()函数。
// 配置 Multer 中间件,指定文件上传的目标文件夹
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "uploads/"); // 这里指定上传文件保存的目录,确保该目录存在
},
filename: (req, file, cb) => {
cb(null, file.originalname);
}
});
// 声明fileFilter函数
const fileFilter = (req, file, callback) => {
// 解决中文名乱码的问题 latin1 是一种编码格式
file.originalname = Buffer.from(file.originalname, "latin1").toString(
"utf8"
);
callback(null, true);
};
const upload = multer({storage: storage, fileFilter: fileFilter});
代码
const express = require("express");
const router = express.Router();
const multer = require("multer");
// 配置 Multer 中间件,指定文件上传的目标文件夹
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "uploads/"); // 这里指定上传文件保存的目录,确保该目录存在
},
filename: (req, file, cb) => {
cb(null, file.originalname);
}
});
const fileFilter = (req, file, callback) => {
// 解决中文名乱码的问题 latin1 是一种编码格式
file.originalname = Buffer.from(file.originalname, "latin1").toString(
"utf8"
);
callback(null, true);
};
const upload = multer({storage: storage, fileFilter: fileFilter});
router.post("/upload/files", upload.single("file"), (req, res) => {
res.json({message: "文件上传成功!"});
});
module.exports = router;
|