我将数据从NetSuite Suitelet发送到Square Connect API。我使用的是SuiteScript 2。
我需要通过HTTP POST将图像文件从NetSuite文件柜发送到Square。根据https://docs.connect.squareup.com/api/connect/v2#endpoint-v1items-uploaditemimage的Square文档,数据需要以多部分形式作为二进制数据发送。
由于https://stackoverflow.com/a/46964827/127434,我认为我已经完成了多部分表格。
但是,我还没有弄清楚如何将文件数据转换为Square接受的二进制格式。 Square抱怨:“无效的多部分表单数据”。
我很乐意收到建议。
我相信file.getContents()返回二进制文件的base64编码。
因此,在您的多部分设置中,尝试在文件内容数据之前设置Content-Transfer-Encoding。
见https://www.drupal.org/project/smtp/issues/2909678
所以在我上面提到你的答案中你会尝试:
if (partIsFile) {
body.push(getContentType(p.value));
if(partIsBinary(p.value)) body.push('Content-Transfer-Encoding:base64');
}