2017-09-06 215 views
0

我寫了一個Android應用程序發送一些文字(應該被保存在一個文件中),圖像(應該被保存爲一個單獨的文件),與HTTP- POST -request使用凌空 lib。HOWTO使用保存的base64編碼的圖像節點紅

將圖像轉換爲字節數組。該字節數組使用Base64.encodeToString()轉換爲字符串。該字符串在發送到服務器的JSON對象中設置爲屬性。

在服務器側的接口是一個節點 - 紅 - 服務器:該數據被接收,文件名和文本被提取。到目前爲止一切正常。但是,保存圖像(這是一個Base64編碼的字符串)只能將該字符串寫入一個jpg文件。

剩下要做的是將圖像字符串解碼並保存爲圖像。我不知道該怎麼做。我嘗試了this的方法,但節點紅不知道圖片()

我也沒有完全理解,爲什麼要發送圖片的最佳方式是將其解析到一個字節數組和編碼該數組爲Base64字符串。如果有人能解釋這個想法,或者聯繫我一個教程,這可能對我有幫助。

請讓我知道,如果你需要我的應用程序代碼/節點 - 紅 - 流動,以幫助。

+0

我們不能幫助你,爲什麼你**在發送之前選擇base64編碼圖像。 – hardillb

+0

呃......你說的對,但是我發現的大多數教程都是這樣做的。所以我認爲這是完成的原因 – user2699453

回答

1

有一個base64節點RED節點(node-red-node-base64),將base64編碼的字符串轉換成二進制的NodeJS緩衝器。

如果你把它發送到你會得到正確格式的圖像文件節點之前運行通過這個您的字符串。

+0

感謝您的快速答案。我試過這個節點,但我仍然無法打開圖像。我將圖像字符串作爲有效載荷傳遞給此節點。產生的有效負載應該是jpg文件的內容。我瞭解這是否正確? – user2699453

+0

我試圖打開文件,我的程序告訴我「解釋JPEG圖像文件時出錯(不是JPEG文件:以0x4c 0x7a開頭)」。如果我捕獲的圖像是一個JPG格式,我將它編碼併發送到服務器,它應該仍然是JPG格式,不是嗎?我得到了兩個不同的圖像這個錯誤 – user2699453

+0

假設你在Android端編碼是一個格式正確的JPEG流,那麼這應該做你所需要的。 – hardillb

0

我解決了這個問題。對於正在尋找答案的其他人,我張貼這個:

base64 Node-RED node hardilb在他的answer中提到的工作正常,但只有當整個字符串在一行。

如果使用encodeToString()功能與Base64.DEFAULT標誌是這樣的: String returnString = Base64.encodeToString(bytes, Base64.DEFAULT); 你收到一個多行字符串。 如果您使用標誌Base64.NO_WRAP,它可以在節點上正常工作。