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

  }

});
相关推荐
笃行3502 分钟前
SQL编辑器的隐藏技能:KingbaseES 配套 KSQL Developer 使用笔记
数据库
努力进修18 分钟前
时序数据长期承载难题:从压缩、批量写入到数据组织优化
java·开发语言·数据库
CaptainT22 分钟前
先把例子跑起来:MySQL 环境与本文的示例数据
数据库·后端·mysql
Dovis(誓平步青云)23 分钟前
总用电下降了,为什么家庭能源看板仍然提示异常
java·开发语言·数据库·人工智能·算法·电脑·能源
xiaogai_gai23 分钟前
电商采购入库对接财务VMI采购入库(单号回写)实战教程
大数据·数据库
夜雪一千30 分钟前
MySQL中查询和操作JSON类型的数据
数据库·mysql·json
一条破秋裤44 分钟前
05_设备树自定义属性_写入读取验证
linux·网络·数据库
辛迪聊物业数字化1 小时前
物业数字化选型避坑:3步判断系统是否适配你的业态
数据库
砚底藏山河1 小时前
量化新手误区:因子计算与行情数据的工程化解耦
java·数据库·python·金融
程序 代码狂人1 小时前
SQL COUNT 统计 NULL 与空字符串 ‘‘ 差异(Oracle & Impala)
数据库·sql·oracle