微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java Multipart 文件到 blob 然后返回到 Image 有大量随机字符

如何解决Java Multipart 文件到 blob 然后返回到 Image 有大量随机字符

我从 jsp 接收图像,转换为字节,然后 blob 并将其保存在我的数据库中,然后在不同的页面上检索它,当我检索图像时,我得到以下字符串。

>
'x*??{[?Y?>YE *?????_/???????~%?+y?`??uH????#??\t?????|B??k?-??Z4V?U7?F???m+(?? ? I??pq^?Q???????18?R???-???>0~?sXxCI?;[;t???9?fBX?Bp?A??^M?k? ??G?S?u???????r?U&‚w*??8????`??> Y?2?????1?j$??\??DR[??t0? pps?_Ex? ???_o?*?? xV)?6D8?$??!?9??~???N?`???}W?s?gNUf?Mn>?s?3?r?3M???X???Q????N!pr~?W????Mjq5??????2m???8????x??V?????????[???"??*,I?/@s?V?d?B?/?Vb?&R?n|?>??2????)?r??1??%7?Q??^f?R?C?????mvm??%6?K?p??;O?Z?&?????u?????\???R"ZOex???VkE???????_??????K?M@=??o?Z[?[hb?H?V????

我已经在这里手动减少了它。 这是我做的标签

     <img src="data:image/jpeg;base64,${img}" width="100" height="100"></img>

我不太确定这里出了什么问题,这里是我把文件变成一个字节 [] 然后一个 blob 的地方。

    byte[] byteData = file.getBytes();
    Blob blobs = new SerialBlob(byteData); 

然后我如何将其转换为 base64 字符串。

    String base64DataString = new String(byteData,"UTF-8");
    System.out.println(base64DataString);
    model.addAttribute("img",base64DataString);

如果有人知道如何将此字符串转换为可用于复制图像的普通 base64 字符串,那将非常有帮助。 吉姆

解决方法

String base64DataString = Base64.getEncoder().encodeToString(byteData);

永远不应该将二进制数据转换为包含 Unicode 的字符串,主要是 UTF-16 字符,其中每个字节花费 2 个字节(一个字符),并且转换需要时间并且可能会出错。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。