根据 this 博客,我正在尝试将文件上传到 salesforce。
这是纽约代码的一部分:
const base64Content = fs.readFileSync('/home/***/Desktop/version.png', { encoding: 'base64' });
const fileName='version.png';
request.post({
url: `${res.instance_url}/services/data/v49.0/sobjects/ContentVersion`,
auth: {
bearer: res.access_token
},
formData: {
entity_content: {
value: JSON.stringify({PathOnClient: fileName}),
options: {
contentType: 'application/json'
}
},
VersionData: {
//value: base64Content,
value: `data:image/png;base64,${base64Content }`,
options: {
filename: fileName,
contentType: 'application/octet-stream'
}
}
}
}, (err, response) => {
if (err) callbackerr(err);
callback(response)
})
图片已上传,但 salesforce UI 中没有预览。我尝试下载图像 -
对于 PNG 图像,我得到:
读取 PNG 图像文件时发生致命错误:不是 PNG 文件
对于 JPEG:
解释 JPEG 图像文件时出错(不是 JPEG 文件:以 0x64 开头 0x61)
我错过了什么?我也尝试用“image/png”替换“application/octet-stream”。
在开发者控制台中查询如下:
SELECT id, ContentDocumentId, FileExtension, FileType FROM ContentVersion
提供 FileExtension png 和 FileType PNG。
我发现问题了。 图像应该是缓冲区而不是base64...
const buffer = fs.readFileSync('/home/***/Desktop/version.png');