如何通过Postman向Node.js的Express接口上传data.json文件并获取内容
解决方案
问题根因
- Express 默认不解析
multipart/form-data格式的请求体,所以直接读取req.body只会得到空对象 - 你的代码中既没有引入文件上传处理中间件,也没有定义
data变量,根本无法获取到上传的文件内容
方案1:继续使用form-data格式上传(适合需要上传文件的场景)
- 第一步:安装Express官方推荐的文件上传中间件
multer
npm install multer
- 第二步:修改接口代码,配置内存存储模式直接读取文件内容,不需要写入本地磁盘
const express = require('express'); const multer = require('multer'); const app = express(); // 配置multer用内存存储,直接读取buffer不存盘 const storage = multer.memoryStorage(); const upload = multer({ storage: storage }); // upload.single参数对应Postman form-data里的文件字段名,示例用的字段名为file app.post('/upload', upload.single('file'), function (req, response) { // 将文件buffer转字符串后解析为JSON,得到通讯录数组 const contactList = JSON.parse(req.file.buffer.toString()); // 这里可以把contactList赋值给你需要存储的全局/局部变量 console.log(contactList); response.send(contactList); }); app.listen(3000, () => console.log('服务运行在3000端口'));
- 第三步:检查Postman配置
- Body选择
form-data,Key列填写file(和代码中参数保持一致),Key类型切换为File(不要用默认的Text) - Value列选择桌面的
data.json文件,直接发送请求即可
- Body选择
方案2:直接传JSON内容(更适合纯JSON数据场景,无需额外依赖)
如果不需要走文件上传的形式,可以直接把JSON内容放到请求体里传输,代码更简单:
- Postman配置:Body选择
raw,格式下拉选JSON,把data.json里的所有内容复制粘贴到请求体输入框 - 接口代码:
const express = require('express'); const app = express(); // 开启JSON请求体解析 app.use(express.json()); app.post('/upload', function (req, response) { const contactList = req.body; console.log(contactList); response.send(contactList); }); app.listen(3000, () => console.log('服务运行在3000端口'));
内容的提问来源于stack exchange,提问作者mr. chouhan
相关产品推荐
相关产品推荐

