求助:无法通过JSON格式的POST API发送PDF文件
解决Postman中发送含Base64编码PDF的POST请求问题
核心问题分析
你之前的两种尝试都存在本质问题:直接传文件路径时,Postman不会自动将文件转换为Base64字符串,后端收到的只是路径文本而非编码后的数据;手动转换Base64则容易出现字符串截断、格式错误,导致后端解析失败。以下是可靠的解决步骤:
1. 用Postman预请求脚本自动生成Base64编码
借助Postman的预请求脚本可以自动读取本地PDF并完成编码,彻底避免手动操作的失误:
- 打开目标请求的Pre-request Script标签页
- 粘贴以下代码,替换为你的PDF文件绝对路径:
const fs = require('fs'); // Windows路径用双反斜杠(例:C:\\files\\test.pdf),Mac/Linux用正斜杠 const pdfFilePath = '/Users/xxx/Documents/test.pdf'; const pdfBase64 = fs.readFileSync(pdfFilePath, { encoding: 'base64' }); // 将编码结果存入环境变量,方便后续调用 pm.environment.set('encodedPdf', pdfBase64);
- 点击请求旁的Save保存脚本
2. 配置正确的POST请求
- 请求方法选择
POST,填写目标接口URL - 切换到Headers标签,添加
Content-Type: application/json(若后端要求JSON格式) - 切换到Body标签,选择
raw并将格式设置为JSON - 构造包含三个参数的JSON体,通过环境变量引用Base64字符串:
{ "param1": "你的第一个参数值", "param2": "你的第二个参数值", "pdfFile": "{{encodedPdf}}" }
- 点击Send发送请求
3. 常见错误排查
- 文件路径错误:确保使用绝对路径,Windows系统注意转义反斜杠,Mac/Linux直接用正斜杠即可
- Base64字符串截断:手动复制长Base64字符串容易丢失字符,用预请求脚本生成可完全规避
- 后端参数不匹配:确认JSON中的参数名与后端接口定义完全一致,比如后端要求参数名为
pdf_base64,就不能写成pdfFile - 请求头错误:如果后端要求的
Content-Type不是application/json(如application/x-www-form-urlencoded),需对应调整请求体格式(改为form-data或x-www-form-urlencoded,参数值填写{{encodedPdf}})
内容的提问来源于stack exchange,提问作者MSH
相关产品推荐
相关产品推荐

