使用 `multer` 中间件来处理文件上传,同时将文件的元数据存储到 MongoDB 中。
一、安装依赖
bash
npm install multer
二、核心代码
javascript
// 定义文件模型
const fileSchema = new mongoose.Schema({
originalname: String,
mimetype: String,
size: Number,
path: String,
});
const File = mongoose.model("File", fileSchema);
// 配置 multer
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "uploads/");
},
filename: function (req, file, cb) {
cb(null, Date.now() + path.extname(file.originalname));
},
});
const upload = multer({ storage: storage });
// 创建上传目录
const fs = require("fs");
if (!fs.existsSync("uploads")) {
fs.mkdirSync("uploads");
}
// 处理文件上传
app.post("/upload", upload.single("file"), async (req, res) => {
try {
const { originalname, mimetype, size, path } = req.file;
const newFile = new File({
originalname,
mimetype,
size,
path,
});
await newFile.save();
res.status(200).json({ message: "文件上传成功", file: newFile });
} catch (error) {
res.status(500).json({ message: "文件上传失败", error: error.message });
}
});