【问题标题】:MimeType missing in Base64 encoded urlBase64 编码的网址中缺少 MimeType
【发布时间】:2019-08-06 13:55:48
【问题描述】:

我需要在 json 请求中传递图像,我正在使用 javax.Base64 编码器。

我能够将图像编码为 Base64,但我发现生成编码字符串中缺少 mime 类型“data:image/png;base64”。

所以,我的编码字符串如下所示:

iVBORw0KGgoAAAANSUhEUgAAAPAAAABQCAAAAAACIqegAAABMEl**********

而且,这是我正在尝试使用 junit 的简单代码:

@Test
    public void getBiographicPanel() {
        byte[] image = bacodeGenerator.generateBarocdeImage("12345678");
        System.out.println(Base64.getEncoder().encodeToString(image));
        System.out.println(org.apache.commons.codec.binary.Base64.encodeBase64String(image));

        assertNotNull(image);
    }

如何,Base64 API 中是否存在任何方式或输入参数,我们可以配置以生成具有 MimeType 的 Base64 图像内容,如下所示?

data:image/png;base64,iVBORw0KGgoAAAANS

【问题讨论】:

  • 我认为添加 MIME 类型不是编码器的工作
  • 但是如果你参考stackoverflow上的问题和示例,大多数用户都提到了带有这个标题的String。所以,我假设必须有一些编码器提供这个元数据。在最坏的情况下,我需要明确地将元数据附加为前缀。
  • 你能把这些问题联系起来吗? MIME 类型在调用远程端点之前设置。
  • 我指的是这个问题:stackoverflow.com/questions/11546917/…。但我可能错了。我可能需要手动附加它。

标签: java encoding base64


【解决方案1】:

MIME 类型是

文件格式和传输格式内容的两部分标识符 在互联网上。

这意味着如果您不需要通过 Internet 协议(例如 HTTP)交换此文件,则该类型绝对无关紧要。


你也很困惑

data:image/png;base64

使用MIME 类型。那不是媒体类型。

data: 是一种实际的 URL 格式,用于指定浏览器内的内联数据(请参阅IETF)。
在您的情况下,这意味着“嘿浏览器!查看这个以 Base64 编码的本地资源以构建图像!”。

这通常用于<img /> 标签,并且必须手动设置。这意味着您必须知道数据的实际格式。

【讨论】:

  • 感谢您的澄清。由于网上的一些障碍,我有点困惑。在我的例子中,我将一个 json Map 发送到远程服务。 map 的值可以是 String 或 Base64 编码的图像。所以基本上,我需要一种解决方法来确定远程服务上的值是字符串还是图像。在这里,我认为唯一的方法是将“image/png;base64”之类的前缀添加到 Base64 编码的字符串中,我们可以在远程服务上检查以确定该值是图像。
  • @GunjanShah 携带 MIME 类型的最正确方法是通过 HTTP 标头 (Content-Type)。这张地图是否只携带编码/标准字符串或其他数据?如果它有混合数据,那么是的,您需要手动为编码的字符串添加前缀。您还可以创建自定义对象格式来保存数据和数据格式{ "data": "...", "format": "image/png;base64" }
  • 是的,这张地图包含混合数据。它可能有 String 和 byte[] 类型的值。而且我不能请求格式,因为请求合同被固定为调用第三方网络服务。所以,我想,我只能让他们检查图像的前缀。
  • @GunjanShah 考虑为您的Map 值使用自定义数据格式,就像我在上面指定的格式一样
  • 我得到了另一个解决方案。我们可以使用 URLConnection.guessContentTypeFromStream(bin) 函数。如果我传递普通字符串的输入流,此方法将返回 null。如果我传递图像的输入流,它会返回确切的图像类型“PNG”。所以我可以使用这些远程服务来检查内容是否是图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 2023-03-21
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
相关资源
最近更新 更多