如何在Postman GET脚本中将Base64学生照片导出为JPG文件
实现方法
Postman的GUI沙箱出于安全限制无法直接写入本地文件,所以自动保存需依赖Newman(Postman命令行工具);如果只是临时测试,也可以用GUI生成下载链接手动保存。以下是具体方案:
方法一:Newman命令行自动保存(推荐,实现完全自动化)
1. 编写Tests脚本
在你的GET请求的Tests标签页中添加以下代码,根据响应结构调整字段:
// 1. 解析响应(假设返回JSON格式:{"id":"123456", "image":"Base64字符串"}) const resData = pm.response.json(); const studentId = resData.id; // 替换为你实际的学生ID字段名 let base64Str = resData.image; // 2. 去除Base64前缀(如果响应里带了"data:image/jpeg;base64,"这类前缀) base64Str = base64Str.replace(/^data:image\/jpeg;base64,/, ''); // 3. 引入文件系统模块,准备保存文件 const fs = require('fs'); const path = require('path'); // 定义保存路径,这里会在当前目录下创建student-images文件夹 const saveDir = path.join(__dirname, 'student-images'); const savePath = path.join(saveDir, `${studentId}.jpg`); // 确保文件夹存在,不存在则自动创建 fs.mkdirSync(saveDir, { recursive: true }); // 写入文件 fs.writeFileSync(savePath, base64Str, 'base64'); console.log(`照片已保存至:${savePath}`);
特殊情况处理:如果响应是纯Base64文本(非JSON),直接用
responseBody代替resData.image;学生ID如果来自请求参数/URL路径,比如请求URL是https://xxx/students/123456/photo,可以这样获取:const studentId = pm.request.url.path[2]; // 根据实际路径索引调整 const base64Str = responseBody;
2. 安装Newman
打开命令行执行:
npm install -g newman
3. 导出集合并运行
- 在Postman中右键你的请求集合,选择Export,导出为v2.1格式的JSON文件
- 命令行运行集合,触发脚本自动保存文件:
newman run 你的集合文件名.json
运行完成后,照片会自动保存到指定的student-images文件夹下。
方法二:Postman GUI生成下载链接(手动保存,适合快速测试)
如果只是临时验证,不想用命令行,可以在Tests脚本里生成可视化下载链接:
const resData = pm.response.json(); const studentId = resData.id; let base64Str = resData.image.replace(/^data:image\/jpeg;base64,/, ''); // 构建可视化HTML内容 const htmlContent = ` <div> <h4>学生ID:${studentId}</h4> <a href="data:image/jpeg;base64,${base64Str}" download="${studentId}.jpg">点击下载照片</a> <br><br> <img src="data:image/jpeg;base64,${base64Str}" width="250"> </div> `; // 在Visualize标签页渲染内容 pm.visualizer.set(htmlContent);
发送请求后切换到Visualize标签页,就能看到带预览的下载链接,点击即可保存为对应ID的JPG文件。
关键注意事项
- 必须去除Base64字符串的
data:image/jpeg;base64,前缀,否则保存的文件无法正常打开 - Newman运行时,
__dirname指的是命令执行的当前目录,可根据需要调整保存路径 - 如果响应格式不是JSON,要对应修改响应体的读取方式
内容的提问来源于stack exchange,提问作者BrianHarry
相关产品推荐
相关产品推荐

