从Salesforce Apex调用Azure Put Blob from URL遇OutOfRangeInput错误求助
解决建议
验证Salesforce链接的真实可访问性
把你使用的DistributionPublicUrl或contentdownloadurl复制到匿名浏览器窗口(清空缓存、禁用Cookie)直接访问,确认能无登录下载文件。如果需要登录,说明链接并非真正公开,Azure无法拉取,需改用Salesforce Files的公开分享功能生成无需登录的链接。确保Salesforce链接的时效性
Salesforce的临时下载链接(如contentdownloadurl)有效期通常仅15分钟左右,请求Azure时必须使用刚生成的新鲜链接,避免因链接过期导致Azure返回参数错误。检查Azure请求参数的正确性
- 确认
x-ms-copy-source头中的Salesforce链接无URL编码错误,特殊字符需正确转义。 - 不要手动设置
Content-Length头,让Azure自动从Salesforce的响应中获取文件大小;若必须设置,需确保数值与文件实际大小完全一致。
- 确认
改用分块上传方案(绕过Apex限制)
由于无法使用中间服务器,可通过Salesforce Apex实现分块上传到Azure Blob:- 在Apex中读取Salesforce ContentVersion文件,分割为4MB以内的小块(符合Apex调用限制)。
- 逐个调用Azure的
Put Block接口上传每个块。 - 调用
Put Block List接口合并所有块为完整Blob。
检查Salesforce分发配置的访问控制
确认Content Distribution的分发配置未设置IP白名单或其他访问限制,确保Azure服务IP能正常访问该分发链接。
内容的提问来源于stack exchange,提问作者Vishwamber Shetty
相关产品推荐
相关产品推荐

