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

通过传真SOAP API添加附件时页面出现乱码点的问题排查

问题:Make.com发送SOAP API传真时附件显示乱码

我正在使用Make.com发送SOAP API请求程序化发送传真,尝试通过二进制数据转base64编码的方式在XML请求体中添加附件。我用以下代码编码:

let bytes = new TextEncoder().encode(input);
let base64String = btoa(bytes);
return base64String

将编码后的字符串嵌入SOAP请求的XML中(XML格式正确无缩进):

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<sendFax xmlns="http://ws.xm.faxserver.com/">
<userId xmlns="">testuser@test.com</userId>
<subject xmlns="">Test fax from Make</subject>
<comment xmlns="">This is a test fax sent from Make</comment>
<!-- Optional -->
<recipient xmlns="">
<number>1234567890</number>
<name>Test recipient</name>
<company>Test company</company>
</recipient>
<!-- Optional -->
<attachment xmlns="">
<name>[string]</name>
<contents>[base64Binary] THIS IS WHERE I INCLUDE THE ENCODED DATA</contents>
</attachment>
<!-- Optional -->
<senderInfo xmlns="">
<salutation>To whom it may concern</salutation>
<firstName>Justin</firstName>
<lastName>Domingo</lastName>
<title>ECM Technician</title>
<email>jdomingo@ubeo.com</email>
<company>UBEO</company>
</senderInfo>
<isCommentTypeHtml xmlns="">true</isCommentTypeHtml>
</sendFax>
</Body>
</Envelope>

请求返回200,但传真附件显示乱码(仅显示一堆乱码点)。试过多种编码方式、直接嵌入二进制数据都无效,请问问题出在哪?


核心问题:二进制文件的编码方式错误

你用TextEncoder.encode(input)处理二进制文件是错误的——TextEncoder仅用于将文本字符串转成UTF-8编码的字节数组,如果input是二进制文件(比如PDF、图片等),这种方式会破坏原始二进制数据,导致转base64后无法还原出正确的文件内容。

正确的处理步骤

1. 在Make.com中直接获取文件的base64编码

Make.com自带处理文件的工具,不需要手动写编码脚本:

  • 如果你的文件是从Make的文件模块(比如Google Drive、本地文件上传)获取的,直接使用文件的Base64 content属性,这个属性已经是正确的base64编码结果,无需二次处理。
  • 如果你必须用脚本处理,确保输入的是原始二进制数据而非字符串,改用btoa()直接处理二进制数据的字符串表示(注意:Make的环境中,处理二进制文件优先调用内置文件属性,避免手动编码出错)。

2. 修正XML中的base64格式

确保XML的<contents>标签中:

  • 移除[base64Binary]占位符,直接填入纯base64字符串即可。多数SOAP API要求base64Binary类型的值就是纯编码字符串,不需要前缀标识。
  • 确认XML没有对base64字符串进行额外转义(比如把+转成&#43;、/转成&#47;),Make.com在嵌入变量到XML时如果开启了自动转义,需关闭或确保转义符合XML规范。

3. 验证base64的正确性

把你生成的base64字符串复制到在线解码工具(或本地用atob()解码),检查是否能还原出原始文件:

  • 如果解码后文件损坏,说明编码环节出错,回到第一步重新处理。
  • 如果解码后文件正常,检查附件文件名后缀是否正确(比如<name>里要写test.pdf而非[string],确保传真服务器能识别文件类型)。

额外排查点

  • 确认传真API的sendFax接口对附件的要求:是否支持你发送的文件类型(比如仅支持PDF、TIFF),是否有文件大小限制。
  • 检查SOAP请求的Content-Type头是否正确,应设置为text/xml; charset=utf-8或application/soap+xml; charset=utf-8,避免字符编码问题。

内容的提问来源于stack exchange,提问作者Justin Domingo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 20:34:52