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

Apex代码通过Multipart FormData上传音频文件报错求助

解决Apex Multipart FormData上传音频时的ActionController::UnknownFormat错误

我来帮你排查这个问题——你遇到的ActionController::UnknownFormat错误,核心是你的Apex代码在构建Multipart FormData请求时忽略了几个关键细节,而Postman会自动处理这些,所以能正常运行。下面是具体的修复方案:

1. 别把文件路径当内容传!

你现在的代码里直接把F:\Test.mp3这个字符串拼进请求体里,服务端收到的是一串路径文本,根本不是音频的二进制数据,这肯定会导致解析失败。

Apex无法直接访问本地文件系统,你得先把音频文件上传到Salesforce的Static Resource或者Attachment中,再读取对应的Blob内容:

// 示例:从Static Resource读取音频Blob
StaticResource audioResource = [SELECT Body FROM StaticResource WHERE Name = 'TestAudio'];
Blob audioBlob = audioResource.Body;

2. 用规范的HTTP换行符

HTTP协议里的Multipart分隔要求用\r\n(CRLF),你代码里用的单纯换行符会导致服务端解析请求结构出错。

3. 重新构建正确的Multipart请求体

按照标准格式拼接请求体,把音频Blob正确插入到分隔块中:

// 生成随机的boundary(避免和内容冲突)
String boundary = '----WebKitFormBoundary' + String.valueOf(Crypto.getRandomLong());
String contentTypeHeader = 'multipart/form-data; boundary=' + boundary;

// 构建请求块的头部
String partHeader = '--' + boundary + '\r\n' +
                   'Content-Disposition: form-data; name="recording[s3_location]"; filename="abc.mp3"\r\n' +
                   'Content-Type: audio/mpeg\r\n\r\n';

// 构建请求块的尾部
String partFooter = '\r\n--' + boundary + '--';

// 拼接完整的请求体Blob:头部字符串转Blob + 音频Blob + 尾部字符串转Blob
Blob requestBody = Blob.valueOf(partHeader) + audioBlob + Blob.valueOf(partFooter);

4. 正确配置请求头

发送请求时,必须把Content-Type设置为包含boundary的完整值,确保服务端能正确解析Multipart结构:

HttpRequest req = new HttpRequest();
req.setEndpoint('你的外部Web服务URL');
req.setMethod('POST');
req.setHeader('Content-Type', contentTypeHeader);
// 用setBodyAsBlob而不是setBody,避免二进制内容乱码
req.setBodyAsBlob(requestBody);

Http http = new Http();
HttpResponse res = http.send(req);

// 打印调试信息
System.debug('响应状态码:' + res.getStatusCode());
System.debug('响应内容:' + res.getBody());

为什么Postman能正常运行?

Postman会自动帮你完成这些细节:

  • 正确读取本地文件的二进制内容
  • 自动生成符合规范的boundary和CRLF换行符
  • 自动设置正确的Content-Type请求头

而你的手动构建请求体时遗漏了这些,导致服务端无法识别请求格式,抛出ActionController::UnknownFormat错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:18:56