You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#从请求体读取PDF写入文件后空白,Postman测试方式差异问题

问题原因分析
  • 你猜的没错,直接复制PDF的Raw文本内容到Postman的Raw模式发送,确实会丢失关键信息。PDF是二进制格式文件,内部包含大量无法用常规文本编码(比如UTF-8)正确表示的字节序列。当你把带%PDF-1.7标识的PDF原始内容复制到Raw框时,Postman会默认按文本编码处理这些内容,转换过程中会把无法识别的字节替换成占位符(比如�),直接破坏了原始二进制数据,最终生成的PDF自然是空白的。
  • 而Binary模式是直接上传原始二进制文件,不会经过编码转换,能完整保留PDF的所有字节,所以可以正常生成可读的PDF。
代码侧验证与修正建议

你的C#代码逻辑(读取Request.Body字节数组写入文件)本身没问题,问题出在请求发送环节。可以加个简单验证确认:

  1. 用Binary模式上传正常的PDF,在代码里打印读取到的字节数组长度,和原文件字节数对比,应该完全一致。
  2. 用Raw模式发送后,同样打印字节数组长度,会发现和原文件长度不同,这就证明数据在发送时已经损坏。

如果非要支持Raw模式发送(不推荐,毕竟PDF是二进制文件),必须确保发送端和接收端使用二进制兼容的编码(比如ISO-8859-1),但这种做法依然存在风险,因为PDF的部分字节还是可能被编码转换影响。最稳妥的方式还是始终用Binary模式上传PDF文件。

补充测试方法

可以手动对比两种模式的请求体差异:

  • 用Postman控制台或Fiddler查看Binary模式的请求体,是完整的原始二进制字节流。
  • 查看Raw模式的请求体,会发现部分字节已经被替换成编码兼容的字符,和原始PDF内容完全不一致。

内容的提问来源于stack exchange,提问作者Xiong Xu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 09:11:31