Base 64编码问题(MIME-NO-LINEFEEDS)

时间:2017-10-24 15:46:16

标签: java android spring jackson base64

在我的Android应用中,我尝试将图像编码为Base64字符串,以将其发送到处理它的API。当从AngularJS(web)编码文件并发送它时,它可以正常工作,但仍然没有找到使其与 Android 一起使用的方法。

这是我的代码:

 ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
 if(image.compress(compressFormat, quality, byteArrayOS)) {
     return Base64.encodeToString(byteArrayOS.toByteArray(), Base64.NO_WRAP); // tried several flags ...
  } else {
     return null;
  }

其中:

compressFormat = Bitmap.CompressFormat.JPEG;
quality = 100;
// The variable image is a Bitmap Image

错误消息:

  

无法读取文档:无法将VALUE_STRING解码为base64   (MIME-NO-LINEFEEDS):非法字符' \"' (代码0x22)在base64中   content \ n at [来源:java.io.PushbackInputStream@5d1a0f8e;行:1,   专栏:276951]

更新: 有一些图像(字符串)被接受,而其他图像(字符串)没有。但我无法弄清楚为什么......

不接受字符串:https://jsfiddle.net/dqpth401/

接受字符串:https://jsfiddle.net/r8gLejsL/2/

我一直坚持这个问题,欢迎任何提示/建议!

由于

1 个答案:

答案 0 :(得分:1)

错误提到双引号(")可能是结束。 数据是正确的,可转换为笑脸。

现在这表明其他事情是错误的:

  • 内容长度,末端减去填充,加空间http转换可能有效(其他数据)
  • 因此仍然是组件:HTML图像标记或使用的任何内容。

在标签中有一些元信息文本,后跟base64

src="data:image/jpeg;base64, ..."

非常推测:jpeg中缺少e(正确)而不是image / jpg(不正确)。