2017-09-06 51 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,它可以在节点上正常工作。