Java Base64编码的url中缺少MimeType

Java Base64编码的url中缺少MimeType,java,encoding,base64,Java,Encoding,Base64,我需要在json请求中传递一个图像,我正在使用javax.Base64编码器 我可以将图像编码为Base64,但我发现生成编码字符串中缺少mime类型“数据:image/png;Base64” 因此,我的编码字符串如下所示: Ivborw0kggoaaansuheugaaaaabqcaaaaciqegaaabmel********** 下面是我用junit尝试的简单代码: @Test public void getBiographicPanel() { byte[] im

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

我可以将图像编码为Base64,但我发现生成编码字符串中缺少mime类型“数据:image/png;Base64

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

Ivborw0kggoaaansuheugaaaaabqcaaaaciqegaaabmel**********

下面是我用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图像内容

数据:图像/png;base64,Ivborw0kggoaaans


MIME
类型为

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

这意味着,如果您不需要通过internet协议(如HTTP)交换此文件,则该类型是完全不相关的


你也很困惑

data:image/png;base64
使用
MIME
类型。不是一种媒体类型

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


这通常用于
标记,必须手动设置。这意味着您必须知道数据的实际格式。

我认为编码器的工作不是添加MIME类型,但是如果您参考stackoverflow的问题和示例,大多数用户都提到了带有此标题的字符串。所以,我假设一定有某种编码器提供这种元数据。在最坏的情况下,我需要显式地附加元数据作为前缀。你能链接这些问题吗?MIME类型是在调用远程终结点之前设置的。我指的是以下问题:。但我可能错了。我可能需要手动附加它。谢谢澄清。由于网络堵塞,我有点困惑。在我的例子中,我将向远程服务发送一个json映射。map的值可以是字符串或Base64编码的图像。因此,基本上,我需要一个变通方法来确定值是远程服务上的字符串还是图像。在这里,我认为向base64编码字符串添加前缀(如“image/png;base64”)的唯一方法是,我们可以在远程服务上检查以确定该值是否为图像。@gunjansha携带MIME类型的最正确方法是通过HTTP头(
内容类型
)。此映射是否仅携带编码/标准字符串,或其他数据?如果它包含混合数据,则需要手动为编码字符串添加前缀。您还可以创建一个自定义对象格式来保存数据和数据的格式
{“data”:“…”,“format”:“image/png;base64”}
是的,此地图包含混合数据。它可能具有字符串和字节[]类型值。而且我不能请求格式,因为请求合同固定为调用第三方web服务。所以,我想,我只能要求他们检查图像的前缀。@ GunJajaAd考虑使用自定义数据格式,就像我上面指定的一个数据格式,对于你的代码> MAP< /Cords> ValueSi得到另一个解决方案。我们可以使用URLConnection.guessContentTypeFromStream(bin)函数。如果我传递普通字符串的输入流,该方法将返回null。如果我传递一个图像的输入流,它会返回精确的图像类型“PNG”。因此,我可以使用这些远程服务来检查内容是否为图像。