【问题标题】:sparkjava: Load PNG as base64 from InputStreamsparkjava:从 InputStream 将 PNG 加载为 base64
【发布时间】:2017-03-05 15:33:12
【问题描述】:

我有以下方法将资源加载为字符串,其中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。

【问题讨论】:

    标签: java base64 png inputstream spark-java


    【解决方案1】:

    在标头中使用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))
    

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

    【讨论】:

      猜你喜欢
      • 2011-02-06
      • 2020-02-22
      • 2017-07-28
      • 2023-02-24
      • 2018-06-26
      • 2017-09-12
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      相关资源
      最近更新 更多