You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用multer上传多文件时无法读取各文件buffer属性的求助

问题原因

你在初始化multer时指定了dest: "uploads/"参数,这会启用multer的默认磁盘存储引擎,文件会被直接写入本地磁盘的指定目录,内存中不会保留文件的二进制buffer数据,因此访问buffer属性会返回undefined。

解决方案

将multer的存储引擎替换为内存存储multer.memoryStorage(),修改路由中的multer初始化代码即可:

const express = require("express");
const router = express.Router();

const multer = require("multer");
// 替换原来的dest配置,使用内存存储
const storage = multer.memoryStorage();
const upload = multer({ storage: storage });

const indexController = require("../controllers/index.controller");

router.post("/send", upload.array("files", 5), indexController.send);

module.exports = router;

修改后req.files中每个文件对象都会携带buffer属性,值为对应文件的二进制Buffer数据。

注意事项

  • 内存存储不会将文件写入本地磁盘,如果需要持久化存储文件,需要手动将Buffer写入本地或者上传到对象存储服务。
  • 高并发或者上传大文件场景下使用内存存储会占用大量服务端内存,容易触发内存溢出问题,这种场景更推荐使用磁盘存储,需要读取文件内容时再通过fs模块读取本地存储的文件即可。

内容的提问来源于stack exchange,提问作者Lakshaya U.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:54:03