Filemaker Pro 19调用QBO v3 API上传发票附件报错排查
故障现象
通过FileMaker Pro 19向QBO对应发票上传附件时,运行编写的请求代码返回如下错误:
System Failure Error: Could find no Content-Disposition header within part
报错截图如下:
故障原因
该错误是QBO接口解析multipart/form-data请求体失败导致,核心触发原因是请求的分段不符合规范:
- 构造multipart请求时,参数/文件分段未携带标准 Content-Disposition 请求头,或头格式不符合RFC 1867规范
- 请求头中声明的boundary边界值,和请求体中实际使用的边界值不匹配,导致服务端无法正确拆分请求分段,识别不到分段头
- FileMaker Pro 19原生的表单提交逻辑在处理二进制文件上传时,不会自动给文件分段补全符合QBO要求的标准 Content-Disposition 头
修正步骤
- 放弃依赖FileMaker自动生成multipart表单请求体,手动拼接符合规范的请求结构
每个分段必须严格遵循格式要求,文件分段参考如下:
业务参数分段(如关联发票ID)参考如下:--{自定义boundary字符串} Content-Disposition: form-data; name="file"; filename="实际附件文件名.后缀" Content-Type: 对应文件的MIME类型(如application/pdf、image/png) {二进制格式的附件原始内容}
所有分段的换行必须使用--{自定义boundary字符串} Content-Disposition: form-data; name="关联参数名(如InvoiceRef)" {对应参数值}\r\n(CRLF)格式,请求体末尾必须添加结束标记--{自定义boundary字符串}-- - 手动配置请求头,禁止FileMaker自动覆盖Content-Type字段:
将Content-Type请求头值设置为multipart/form-data; boundary={你自定义的boundary字符串},boundary建议使用无特殊含义的随机字符串,避免和请求体内容冲突 - 校验规则:
- 所有Content-Disposition头必须携带
name属性,文件分段必须额外携带filename属性 - 分段头和分段内容之间必须保留一个空行
- 附件二进制内容不要做额外的文本编码转换(如转UTF-8带BOM格式),避免破坏分段结构和文件内容
- 所有Content-Disposition头必须携带
内容的提问来源于stack exchange,提问作者smartpctech
相关产品推荐
相关产品推荐


