如何在Postman请求中将图片路径作为源URL传入?
问题根因
Postman的form-data字段类型设为file时,src参数仅支持本地文件系统的绝对路径,不支持HTTP/HTTPS等远程网络路径。你直接填写远程图片URL的情况下,Postman无法将远程资源识别为待上传的本地文件,因此会抛出"No file was submitted"报错。你之前尝试的转义路径操作无法生效,是因为问题本质不是路径格式错误,是Postman本身不支持该场景的配置。
可行解决方案
- 方案1:预请求脚本自动下载+变量引用
你可以在对应请求的「Pre-request Script」标签页添加脚本,提前将远程图片下载到本地临时目录,再将生成的本地路径赋值给Postman变量,formdata的src字段直接引用该变量即可,示例脚本如下:
const fs = require('fs'); const path = require('path'); const http = require('http'); const https = require('https'); // 替换为你的远程图片地址 const remoteImgUrl = 'http://<IP>/testdata/8265.jpg'; // 替换为你本地实际存在的临时目录路径 const localTempPath = path.join(process.env.TEMP || process.env.TMPDIR, 'postman_temp_upload.jpg'); const requestLib = remoteImgUrl.startsWith('https') ? https : http; requestLib.get(remoteImgUrl, (res) => { const writeStream = fs.createWriteStream(localTempPath); res.pipe(writeStream); writeStream.on('finish', () => { writeStream.close(); // 将本地临时路径存入集合变量 pm.collectionVariables.set("temp_upload_img_path", localTempPath); }); });
之后修改formdata配置引用变量即可:
{ "key": "img", "type": "file", "src": "{{temp_upload_img_path}}" }
注意:使用该方案需要先在Postman设置中开启「Allow reading files outside working directory」权限,否则本地文件读写会失败。如果不需要留存临时文件,可以在「Tests」标签页添加脚本自动删除临时文件,避免占用本地存储空间。
- 方案2:调整接口接收逻辑(支持接口可修改的场景)
如果你有权限调整接收请求的后端接口逻辑,可以新增一个接收图片URL的参数,后端收到URL后自行拉取图片资源处理,不需要Postman侧上传文件,该方案实现更简单,不需要调整Postman的上传逻辑。
内容的提问来源于stack exchange,提问作者Paresh Kankariya
相关产品推荐
相关产品推荐

