如何将 MultiPartFile(图像)转换为数据 URI?

How to convert a MultiPartFile (image) to a data URI?

在我的网站上,我正在上传一张图片,需要 return 该图片的数据 URI,但我不知道该怎么做(必须是服务器端)。

我试过下面的代码,但它似乎对文件名进行了编码。

@RequestMapping(value="/path/toDataURL", method=RequestMethod.POST, headers = "content-type=multipart/form-data")
public @ResponseBody String uploadMultipart(HttpServletRequest request, HttpServletResponse response, @RequestParam("file") MultipartFile multiPart) {
    try {
        return "data:image/png;base64," + Base64.encodeBase64(multiPart.getBytes());
    } catch (IOException e) {
        e.printStackTrace();
    }
    return "";
}

如何获取图片的数据URI?

经过多次搜索,我找到了答案 here

StringBuilder sb = new StringBuilder();
sb.append("data:image/png;base64,");
sb.append(StringUtils.newStringUtf8(Base64.encodeBase64(imageByteArray, false)));
return sb.toString();

诀窍是StringUtils.newStringUtf8(...)
我尝试的其他方法返回了 10 个字符长的字符串或格式不正确的数据 URI。