Express + MongoDB 实现文件上传

使用 `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 });

  }

});
相关推荐
liuxiaowei325 分钟前
【绝版教程】新版MySQL DBA高级实战进阶班 MySQL8.0 姜承尧-腾讯数据库总监
数据库·mysql·dba
破碎的南瓜1 小时前
sqli--sql注入过关笔记(1,2,3,4,5,9)
数据库·笔记·sql
吠品2 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
SelectDB3 小时前
Apache Doris Variant 动态 JSON 实战教程:从建表到跑通 100M Agent 日志查询
数据库
sg_knight3 小时前
MySQL 存储过程详解:从入门到实战
android·数据库·mysql·database·dba·关系型数据库·db
星空露珠4 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
踏月的造梦星球4 小时前
DM8 DSC 单机双实例部署
运维·开发语言·数据库
Database_Cool_5 小时前
企业级多模态分析计算引擎选型:首选 AnalyticDB MySQL 向量 + SQL + 实时一体化方案
数据库·sql·mysql
SelectDB5 小时前
从 Oracle、Hadoop 到 Apache Doris:哥瑞利泛半导体智能制造数据平台实践
数据库
ihuyigui5 小时前
海外签收通知短信接口
android·java·开发语言·前端·数据库·后端