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

Go编写Lambda返回WAV二进制负载损坏 如何修正编码问题?

问题原因

你遇到的文件损坏问题确实是编码转换导致的:
AWS的APIGatewayProxyResponse的Body字段默认会被当做UTF-8编码的文本处理,你直接将二进制的[]byte强制转为string时,字节切片中不符合UTF-8编码规则的字节会被自动替换为Unicode替换字符�,这就是你看到原始文件中的<AC>、<B1>字节变成乱码的原因,同时替换操作也会导致响应长度不符合预期。

修复方案

只需要调整两处代码即可:

  1. 开启响应的Base64编码标识,告诉API Gateway需要对你返回的Body做Base64解码后再返回给客户端
  2. 不对outputPayload做字符串转换,直接将其编码为Base64字符串后赋值给Body字段

修改后代码如下:

import "encoding/base64" // 确保引入base64包

//Create the necessary headers
responseHeader := make(map[string]string)
responseHeader["Accept-Ranges"] = "bytes"
responseHeader["Content-Range"] = fmt.Sprintf("%s/%d", rangeRequired, fileSize)
responseHeader["Content-Type"] = fileType // this will be "audio/wav"
responseHeader["Content-Length"] = fmt.Sprintf("%d", returnedByteCount)

// 直接将二进制字节编码为Base64字符串
responseBody := base64.StdEncoding.EncodeToString(outputPayload)
return events.APIGatewayProxyResponse{
    StatusCode: http.StatusPartialContent,
    Headers:    responseHeader,
    Body:       responseBody,
    IsBase64Encoded: true, // 新增该字段,开启Base64解码标识
}, nil
额外校验项

如果修改后仍然有问题,请确认你使用的API Gateway已经将audio/wav加入了二进制媒体类型列表:

  • REST API:需要在API设置的「二进制媒体类型」中添加audio/wav
  • HTTP API:默认支持所有二进制类型,无需额外配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:54:07