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

标签 java android spring jackson base64

在我的 Android 应用程序上,我尝试将图像编码为 Base64 字符串,以将其发送到处理它的 API。当从 AngularJS(网络)编码文件并发送它时,它可以正常工作,但仍然没有找到使其与 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

错误消息:

Could not read document: Failed to decode VALUE_STRING as base64 (MIME-NO-LINEFEEDS): Illegal character '\"' (code 0x22) in base64 content\n at [Source: java.io.PushbackInputStream@5d1a0f8e; line: 1, column: 276951]

更新: 有些图像(字符串)可以接受,有些则不能。但我不明白为什么......

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

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

我一直被这个问题困扰,欢迎任何提示/建议!

谢谢

最佳答案

该错误在可能的结尾处提到了双引号 (")。 数据正确,可转换为笑脸。

现在这表明还有其他问题:

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

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

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

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

关于java - Base 64 编码问题 (MIME-NO-LINEFEEDS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46914832/

相关文章:

android - FCM Android - 空消息 ID

java - 解析嵌套 JSON 数组时卡住

java - 无法使物体绕圈移动

Java 下载大文件意外停止

java - 如何知道 Spring Boot 中的 webjars 路径。如何获取 webjars 中所有可用文件的路径

java - 如何将 List<A> 转换为 List<B>?

java - 更改 netbeans GUI 控件的默认外观

java - 锁定对象的字段值

java - 如何防止jsp标签在类加载后被重用

spring - 使用 OAuth2 资源所有者密码授权类型在 Spring Cloud Gateway 中创建路由