2013-10-27 28 views
2

我想为Apex做一个从Apex到salesforce本身的多部分文章。而salesforce希望图像的二进制数据。然而,我们需要在包含边界的头部前缀作为多部分约定的一部分并追加页脚,以便接收端(本例中为salesforce)可以解析并处理数据(本例中为图像)。问题是图像是一个blob,页眉和页脚是字符串。而且我们不能直接连接Apex的这三个部分发送给SF。从销售部门的Apex到销售部门的多部分员额图像的API端点

有类似问题的人建议的一种可能方式是使用base64encoded将blob转换为字符串并连接页眉和页脚。这很好,但只有33%的时间。原因是base64 encdoing在源blob数据字节不是3的精确倍数(这是base64encoding的工作原理)的末尾添加“=”或“==”符号以padd结尾。因此,如果在编码时追加这些填充字符,则会产生问题。没有富有成效的方法能够解决这个最后的问题,我得到了SF的400个不好的要求。 @Nerd在他的博客中提出了一种方法,但是将400的错误解决为成功的201返回值。但是背景问题是,删除“=”字符的方式实际上损坏了blob数据,因此接收端收到有效的请求,但不是有效的内容,因此图像没有真正上传并分配给配置文件。

为了避免上面的连接问题,我还试着将Content-Transfer-Encoding设置为“base64”,并且只将图像作为base64encoded和header/footers作为普通字符串发送,但该请求也会生成500服务器错误。

有没有人遇到任何类似的问题,或者有任何解决方法的指针,用于连接页眉,页脚字符串到blob主体或者用于解析填充的“=”字符并且不破坏数据。或者有人成功尝试使用base64作为Content-Transfer-Encoding方法发送多部分文章?任何帮助,高度赞赏。

卡迈勒

回答