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

使用Zoom下载URL上传录音至Salesforce ContentVersion时文件损坏求助

解决Zoom录音上传Salesforce ContentVersion后文件损坏的问题

问题核心是你用axios下载Zoom音频文件时,默认把响应解析成了UTF-16字符串,二进制数据被转码破坏,导致上传到Salesforce后文件损坏无法播放。

修改后的代码

// Get download_url field from Zoom file returned by api 
const downloadFileUrl = audioFile.download_url;

const token = await generateToken();

// 关键修改:添加responseType: 'arraybuffer',获取原始二进制数据
const recordingResponse = await axios.get(`${downloadFileUrl}?access_token=${token.access_token}`, {
  responseType: 'arraybuffer'
});

// Generate form data
const formData = new FormData();

const metadata = {
    Title: audioFile.id, // 修正原代码变量混淆问题,应该用audioFile的id
    ContentLocation: 's',
    PathOnClient: 'audio.m4a',
    OwnerId: ownerId ?? process.env.DEFAULT_FILE_OWNER_ID,
    ReasonForChange: 'Testing',
};

formData.append('entity_content', JSON.stringify(metadata), {
    contentType: 'application/json'
});

const file = recordingResponse.data; // 现在data是ArrayBuffer类型的原始二进制数据

formData.append('VersionData', file, {
    filename: metadata.PathOnClient,
    contentType: 'audio/m4a' // 替换通用类型为具体音频MIME类型,帮助Salesforce识别
});

const conn = await salesforceClient.getClient();

const axiosConfig = {
    headers: {
        'Authorization': `Bearer ${conn.accessToken}`,
        // 移除手动设置的Content-type,FormData会自动生成带boundary的正确请求头
    }
};
    
// Post to Salesforce   
await axios.post(`${process.env.SALESFORCE_LOGIN_URL}/services/data/v55.0/sobjects/ContentVersion`, formData, axiosConfig)
  .catch((error) => console.log(error));

关键修改说明

  • 指定responseType为arraybuffer:axios默认会把响应解析为字符串,对于音频这类二进制文件,必须显式设置该参数,才能拿到未被修改的原始二进制数据。
  • 修正变量名:原代码里的file.id属于变量混淆,应该使用audioFile.id避免错误。
  • 替换MIME类型:用audio/m4a替代application/octet-stream,让Salesforce更准确识别文件类型,避免后续播放异常。
  • 移除手动Content-type设置:使用FormData时,axios会自动生成包含boundary的multipart/form-data请求头,手动设置反而可能导致格式错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:45:42