2013-10-27 31 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方法發送多部分文章?任何幫助,高度讚賞。

卡邁勒

回答