我使用spring bootapp构建一个类似于休息的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);
}
答案 0 :(得分:0)
您可以在应用程序中定义一个位于/images
的端点,只需从文件系统中读取该文件并将其返回给客户端。