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

Node.js调用SFDC REST API获取图片存本地遇格式不支持问题求助

解决SFDC REST API获取图片显示“不支持的格式”问题

我帮你排查下这个问题——核心原因是图片的二进制数据在处理过程中被损坏了,而JS文件是纯文本类型,所以不受影响。下面拆解原因和修复方案:

问题根源

你的当前代码里,conn.request默认会把响应内容自动解析成字符串,但图片是二进制流数据,字符串编码的转换会破坏原始字节结构,导致保存后的图片格式损坏,最终显示“不支持的格式”。而JS文件本身是文本内容,字符串解析不会影响它的可用性。

修复方案

你需要修改请求配置,让conn.request返回原始的二进制Buffer,避免自动解析成字符串。具体调整如下:

修改后的Node.js代码

function createFile(attachmentBody, attachmntContentType, attachmntName) { 
  var req = { 
    url: attachmentBody, 
    method: 'GET', 
    headers: { 
      "Content-Type": attachmntContentType 
    },
    encoding: null  // 关键配置:让请求返回原始二进制Buffer
  }; 
  var test = conn.request(req, function (err, resp) { 
    if (err) { 
      console.log(err) 
    } else { 
      // 直接将Buffer写入文件,无需额外转码
      fs.writeFile(attachmntName, resp, function (err) { 
        if (err) throw err 
        console.log('File saved.') 
      }) 
    } 
  }); 
}

关键调整说明

  • 添加encoding: null:这个配置会告诉请求库不对响应内容做任何字符串编码处理,直接返回原始的二进制Buffer,完美保留图片的字节数据。
  • 移除多余转码步骤:之前的Buffer.from(resp, 'binary').toString('base64')是冗余操作,现在直接将resp(Buffer类型)写入文件即可,避免二次转码破坏数据。

验证步骤

  1. 运行修改后的代码保存图片
  2. 打开保存的图片,确认是否能正常显示
  3. 可以在回调里打印typeof resp,应该输出object(Buffer是对象类型),确认拿到的是原始二进制数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 08:32:49