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 });

  }

});
相关推荐
有一个好名字1 小时前
从 3.6 亿订单表到毫秒级查询:分库分表指南
数据库·oracle
奥尔特星云大使3 小时前
MySQL 备份基础(一)
数据库·sql·mysql·备份·mysql备份
努力学习的小廉4 小时前
初识MYSQL —— 库和表的操作
数据库·mysql·oracle
浔川python社5 小时前
网络爬虫技术规范与应用指南系列(xc—1)
数据库·爬虫
代码不停5 小时前
计算机工作原理(简单介绍)
数据库·redis·缓存
偷心伊普西隆5 小时前
Python Access:删除数据库中指定的表和查询
数据库·python
小蒜学长6 小时前
springboot基于BS的小区家政服务预约平台(代码+数据库+LW)
java·数据库·spring boot·后端
zhangfeng11338 小时前
生物信息 R语言和 cytoscape 相互沟通的组件RCy3,构建cytoscape网络表 节点类型表 链接边的表,并推送到cytoscape
数据库·r语言·生物信息
小森( ﹡ˆoˆ﹡ )8 小时前
GPT_Data_Processing_Tutorial
数据库·gpt·mysql
krielwus9 小时前
Oracle Linux 7.8 静默安装 Oracle 11g R2 单机 ASM 详细教程
数据库·oracle