当前位置: 首页 > news >正文

Express + MongoDB 实现文件上传

使用 `multer` 中间件来处理文件上传,同时将文件的元数据存储到 MongoDB 中。

一、安装依赖

npm install multer

二、核心代码

// 定义文件模型

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

  }

});

相关文章:

  • ‌Debian 包版本号比较规则详解
  • c++中初始化列表的使用
  • 攻防世界WEB(新手模式)18-easyphp
  • Vue打包(webpack)缓存
  • DCDC60V电源ic,支持48V降压5V、36V降压5V,SL3037B替换TPS54362
  • final 关键字在不同上下文中的用法及其名称
  • Spring Data JPA 中的分页实现:从 BasePage 到 Pageable
  • Dify使用和入门
  • 浮点数在内存中的存储
  • 使用Spring Data Redis操作Redis
  • 学习threejs,使用ShaderMaterial自定义着色器材质
  • wps角标快速生成
  • 2025全开源Java多语言跨境电商外贸商城/Tk/FB内嵌商城I商家入驻I批量下单I完美运行
  • Vue前端项目构建教程
  • 自动化测试无法启动(java.net.SocketException)
  • Linux常用命令大全
  • ONLYOFFICE + Ollama,本地AI模型的高效集成方案
  • (0)阿里云大模型ACP-考试回忆
  • 中科大 计算机网络 第一章 1.3 网络核心笔记
  • 【内存仅用50%】如何跑满
  • 电子政务与网站建设意义/武汉大学人民医院官网
  • 网站建设与管理试卷 判断题/排名优化公司
  • 携程网站建设的意义/百度搜索大数据怎么查
  • 用html表格做的网站/微信公众号平台官网
  • 厦门网站制作公司推荐/网络营销的新特点
  • 中国建设网站银行卡吗/百度 seo优化作用