sparkjava:从InputStream加载PNG作为base64

时间:2016-10-23 22:44:33

标签: java base64 png inputstream spark-java

我有以下方法将资源加载为String,其中path是我的类路径上的资源的String(在纯文本上工作正常):

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

现在我想将PNG图像加载为base64字符串,以便我可以通过sparkjava将其发送回Content-Type: image/png

我该怎么做?

不要使用任何库,只能使用普通的旧Java。

1 个答案:

答案 0 :(得分:0)

使用response.header("Content-Type", "image/png")在标题中设置MIME类型后(查找您的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类,因此您只需运行我在说明中发布的方法的结果通过

Base64.getMimeEncoder().encodeToString(resourceAsString.getBytes(StandardCharsets.UTF_8))

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