sparkjava:从 InputStream 将 PNG 作为 base64 加载

sparkjava: Load PNG as base64 from InputStream

我有以下方法将资源加载为字符串,其中 path 是我类路径上资源的字符串(在纯文本上工作得很好):

try (Scanner scanner = new Scanner(MyClass.class.getResourceAsStream(path))) {
        return scanner.useDelimiter("\A").hasNext() ? scanner.next() : "";
}

现在我想将 PNG 图像作为 base64 字符串加载,这样我就可以使用 Content-Type: image/png 通过 sparkjava 将其发回。

我该怎么做?

不使用任何库,只使用旧的Java。

在 header 中设置 MIME 类型后 response.header("Content-Type", "image/png") (查找你的 MIME 类型 here),你可以使用这个:

try {
    return Files.readAllBytes(Paths.get(MyClass.class.getResource(path).toURI()));
} catch (IOException | URISyntaxException exception) {
    exception.printStackTrace();
}

return null;

除此之外,要在 Java 8 中对 String 进行 base64 编码,您可以使用 java.util.Base64.Encoder class,因此您只需 运行 我通过

在描述中发布的方法的结果
Base64.getMimeEncoder().encodeToString(resourceAsString.getBytes(StandardCharsets.UTF_8))

并将其作为响应发回。不过,出于某种奇怪的原因,我还没有让它为我工作。我只是使用了我的框架的静态文件功能。