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