Postman的raw模式仅支持纯JSON文本,无法上传文件;真正上传文件必须使用form-data模式并手动选择文件,否则后端仅收到路径字符串而非文件内容。

Postman 不能在 raw JSON 里直接传文件路径
Postman 的 raw 模式下选 application/json,只接受纯 JSON 文本,不解析、不读取、不上传本地文件。你写 "filePath": "C:\test\data.xlsx" 或 "path": "/home/user/file.pdf",这只是字符串字段,后端收到的就是一串字面量,不是文件内容本身。
真正上传文件必须用 form-data 模式,并在对应字段点「Select Files」按钮手动选取——Postman 会自动构造 multipart/form-data 请求体,把文件二进制数据和 boundary 包裹进去。
- 误用
raw + JSON写路径 → 后端收不到文件,只收到路径字符串,常见报错:400 Bad Request或file not found - 想让后端“根据路径去服务器上读文件”属于服务端逻辑,不是客户端上传行为,需额外约定且存在安全风险(如路径遍历)
- 若接口文档真要求“传路径字符串”,确认它是否是伪上传(即服务端挂载了共享存储,路径为服务端可访问路径),此时才应填服务端视角的路径,而非你本地路径
JSON 字符串里的反斜杠和特殊字符必须双转义
如果你非要在 JSON 字段里塞一个 Windows 路径字符串(比如用于调试或 mock 场景), 是 JSON 字符串内的转义字符,必须写成 \;而整个 JSON 又要被 Postman 当作文本发送,所以最终得再套一层 shell 或界面解析逻辑。
例如本地路径 C:dataconfig.json:
- 第一步:JSON 合法化 →
"path": "C:\data\config.json"(单个在 JSON 里非法,必须双写) - 第二步:Postman Body 输入时,不额外处理,直接粘贴上面的 JSON 即可(Postman 的 raw 编辑器能正确识别 JSON 转义)
- 但若你在 Pre-request Script 里拼接,就得用 JavaScript 字符串规则:
JSON.stringify({ path: "C:\\data\\config.json" })(JS 字符串里一个要写成\,JSON.stringify 再套一层,所以最终是\\)
常见翻车点:"C:data" 在 JSON 里会被解析成 "C:" + 不可打印字符,导致整个 JSON 格式错误,Postman 显示 Parsing error。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
Postman 里真正上传文件的正确姿势
用 form-data 模式,不是靠路径字符串,而是靠字段类型切换和文件选择:
- Body → 选
form-data - 新增一行,Key 填字段名(如
file或upload),Type 下拉选File(不是Text) - 点右侧「Select Files」,从本地选中文件(支持多选,每个多出一行)
- 如有其他参数(如
userId),在同一 form-data 表格里另起一行,Type 选Text,Value 填值即可 - 不用手动设
Content-Type头 — Postman 会自动生成带boundary的multipart/form-data,并正确设置Content-Length
注意:如果后端要求字段名是 file 但你填成 files,或 Type 错选成 Text,就会上传失败,返回 400 或空文件。
为什么不能用 URL 编码路径再塞进 JSON
有人试过把 C:dataile.txt 手动 URL 编码成 C%3A%5Cdata%5Cfile.txt,再放进 JSON:{"path":"C%3A%5Cdata%5Cfile.txt"} —— 这完全没意义。
- URL 编码是为
x-www-form-urlencoded设计的,对 JSON 字符串内容无效 - JSON 解析器根本不关心里面是不是 URL 编码,它只认语法结构;后端拿到的仍是那个编码后的字符串,不是原始路径
- 反而增加混淆:你传的是编码串,后端却要先 decode 再用,而 decode 规则未必一致(比如是否解
%5C成) - 真正需要路径传输的场景极少,优先确认是否设计有误,或应走
form-data上传
最常被忽略的一点:Postman 的「发送」动作不会触发任何本地文件系统访问 — 它只是按你填写的内容发 HTTP 报文。所谓“路径”,只有在你主动点选文件时,才真正参与二进制载荷组装。

















