Postman 不支持在 UI 中填写相对路径上传文件,file 字段仅接受手动选择的绝对路径文件;CSV 数据驱动仍需手动选取,自动化需换用 curl、Python 或 Node.js 等工具。

file 字段只接受本地绝对路径文件的选择,且每次都要手动点选 —— 这是它的设计限制,不是配置遗漏。
下面说清楚几个关键点,避免你浪费时间折腾不存在的功能。
Postman 的 file 字段根本不认路径字符串
你在 form-data 的 value 栏里输入 ./uploads/test.jpg 或 ../data/file.pdf,Postman 不会解析、不会查找、不会报错,而是直接忽略该字段(或提交一个空文件),后端收到的是空或 undefined。
原因很简单:Postman 桌面版运行在 Electron 环境中,出于安全限制,它禁止 JS 直接读取任意本地路径的文件内容。所有文件上传必须由用户主动点击 Select Files 触发系统原生文件选择器,这是唯一合法入口。
- ✅ 正确操作:点击
file行右侧的Select Files按钮,从弹窗中选取文件 - ❌ 无效操作:在
value输入框里粘贴路径、写变量如{{upload_path}}、用前置脚本赋值pm.request.body.formdata[0].value - ⚠️ 注意:
binary类型 body 同样不支持路径字符串,只支持单文件拖入或点击选择
想“参数化文件位置”?只能靠 Collection Runner + CSV 数据驱动
如果你需要批量测试多个文件(比如 test1.jpg、test2.png),又不想每次手动选,唯一可行路径是:
- 准备一个 CSV 文件,例如
files.csv,内容为:filename ./fixtures/photo.jpg ./fixtures/doc.pdf ./fixtures/empty.txt
- 在 Postman 中新建请求,
form-data的file字段留空(先不管) - 用 Collection Runner 运行时勾选该 CSV,并启用
Preview request before sending - 运行时每轮会弹出文件选择框 —— 此时你仍需手动定位到对应文件(比如
./fixtures/photo.jpg),但至少能按顺序对齐
⚠️ 关键限制:CSV 里的路径只是参考标签,Postman 不会自动映射;你手动选文件时,仍得靠眼睛找,不能靠脚本自动填充。
Postman Mac版是一款专为macOS设计的API开发与测试工具,凭借简洁的界面和强大的功能,深受开发者喜爱。它支持发送各种HTTP请求(GET、POST、PUT等),轻松管理接口集合、环境变量和模拟服务器。Mac用户可享受原生性能、快捷键优化及与系统无缝集成的体验,适用于接口调试、自动化测试和文档生成。无论是个人项目还是团队协作,Postman for Mac都能提升API开发效率,是ma
真正能自动化上传的方案:换工具或写脚本
如果“相对路径自动加载”是硬需求(比如 CI/CD 流水线、每日回归测试),Postman 就不是合适工具。你应该切换到:
-
curl命令行(支持-F "file=@./path/to/file.jpg",路径完全支持相对) - Python +
requests(files={"file": open("./data/report.pdf", "rb")}) - Node.js +
axios(配合fs.createReadStream("./input.json")) - Newman(Postman 的命令行版)也不行 —— 它只是运行已导出的 collection,依然依赖你提前在 UI 里选好文件,无法动态注入路径
顺带一提:Postman 的 Pre-request Script 无法访问本地文件系统,pm.sendRequest 也不能构造 multipart 请求体中的二进制部分 —— 所有这些尝试都会失败。
为什么官方不加相对路径支持?
这不是疏忽,是 Electron 安全模型的刚性约束。浏览器环境(包括 Postman)禁止网页 JS 任意读取本地磁盘,否则等于开放木马入口。你看到的“选择文件”按钮背后,调用的是操作系统级的安全对话框,路径信息在选中前对 JS 完全不可见。
所以别在 Postman 设置里翻 relative path、base directory 或 file root —— 这些选项根本不存在。
















