使用Spring嵌入式tomcat(.jar)公开资源

斯塔夫罗斯

我正在使用spring bootapp构建一个类似rest的api(其中包含端点/控制器,服务存储库...)

我正在使用嵌入式tomcat方法和使用mvn“ package”生成的简单.jar文件来运行我的应用程序。

端点之一允许UI以base64格式发布图像,我正在使用以下方法将其转换为图像并将其存储到服务器。

public static ImageData base64ToImage(String base64) throws IOException
{
    String[] imageDataArray = base64.split(",");
    String mimeType = imageDataArray[0].split(";")[0].split(":")[1];
    String ext = mimeTypeToExtension(mimeType);

    byte[] data = Base64.decodeBase64(imageDataArray[1]);
    String imageTitle = UUID.randomUUID()+"_"+getCurrentUnixTimestamp().toString() + ext;
    String filename = IMAGE_PATH + imageTitle;
    FileUtils.writeByteArrayToFile(new File(filename), data);
    return new ImageData(imageTitle, mimeType);
}

这就是它变得有趣的地方。

我不知道如何暴露这些图像后遗症。

服务器中的文件结构如下所示:

root
-- executable_embedded_tomcat_app.jar
   -- images 
      -- image1.jpg
      -- image2.jpg

当然,以下内容将不起作用:http:// localhost:8080 / images / image1.jpg

那么问题来了:有没有办法公开这些资源-Spring是否提供了这样的功能?我的“可执行jar +嵌入式tomcat”方法是否错误?

非常感谢!

----更新----

正如@DaveH所建议的,我刚刚添加了以下端点控制器:

@RequestMapping(value="/images/{image:.+}", method=GET)
public byte[] getImage(@PathVariable String image) throws IOException
{
    InputStream in = new BufferedInputStream(new FileInputStream("./images/" + image));
    return IOUtils.toByteArray(in);
}
戴夫

您可以在应用程序中定义一个端点,该端点位于/images文件系统中,并从文件系统中读取文件,然后将其返回给客户端。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章