我写了一个Android应用程序,用一个 HTTP-POST -request发送一些文本(应该保存在文件中)和一个图像(应该保存为一个单独的文件) 排球 lib。
图像被转换为字节数组。使用 Base64.encodeToString()将此字节数组转换为字符串。此字符串在JSON对象中设置为属性,该对象将发送到服务器。
服务器端的接口是node-red-server:接收数据,提取文件名和文本。到目前为止一切正常。但是当保存图像(这是一个Base64编码的字符串)时,只将字符串写入jpg文件。
剩下要做的是解码图像字符串并将其另存为图像。我不知道该怎么做。我尝试this方法,但node-red不知道 Image()。
此外,我还没有完全理解,为什么发送图像的最佳方法是将其解析为字节数组并将此数组编码为Base64-string。如果有人可以解释这个想法或给我链接一个教程,这可能对我有帮助。
如果您需要我的app-code / node-red-flow帮助,请告诉我。
答案 0 :(得分:1)
有一个base64 Node-RED节点(node-red-node-base64),它将base64编码的字符串转换为NodeJS二进制缓冲区。
如果在将字符串发送到文件节点之前运行它,您将获得格式正确的图像。
答案 1 :(得分:0)
我解决了这个问题。对于正在寻找答案的其他人,我发布这个:
base64 Node-RED node中提及的answer hardillb工作正常,但只有整个字符串在一行中才能正常工作。
如果您使用带有encodeToString()
标志的Base64.DEFAULT
函数,请执行以下操作:
String returnString = Base64.encodeToString(bytes, Base64.DEFAULT);
你收到一个多行字符串。
如果您使用标志Base64.NO_WRAP
,则它可以与节点一起使用。