我有以下方法将资源加载为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。
答案 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))
并将其作为回复发回。出于某种奇怪的原因,我还没有为我工作。我只是使用了我的框架的静态文件功能。