Playframework 如何通过播放路由器解析模块中文件的路径

Playframework 如何通过播放路由器解析模块中文件的路径,playframework,playframework-1.x,Playframework,Playframework 1.x,我有一组SVG图像文件,它们是播放模块的一部分,由多个播放应用程序共享。对于不支持SVG(*cough*IE6)的旧浏览器,我已经编写了一个控制器,根据浏览器的用户代理字符串将其转换为PNG格式 要使其工作,我需要访问原始SVG文件。但是,文件可能位于模块的/public/images目录或应用程序的目录中。播放路由器能够无缝地解决这两种情况(即,无论foo.svg文件位于应用程序的/public/images目录还是应用程序的/public/images目录,对/foo.svg的GET请求始终

我有一组SVG图像文件,它们是播放模块的一部分,由多个播放应用程序共享。对于不支持SVG(*cough*IE6)的旧浏览器,我已经编写了一个控制器,根据浏览器的用户代理字符串将其转换为PNG格式

要使其工作,我需要访问原始SVG文件。但是,文件可能位于模块的
/public/images
目录或应用程序的目录中。播放路由器能够无缝地解决这两种情况(即,无论
foo.svg
文件位于应用程序的
/public/images
目录还是应用程序的
/public/images
目录,对
/foo.svg
的GET请求始终有效)。因此,我想利用Play的路由器逻辑来查找文件,获取其绝对路径,并将其输入转换库

这可能吗?我在Play的
路由器
类中尝试了一些方法,但他们找不到文件。也许有一种方法可以通过正常的路由逻辑在服务器内部发出某种内部GET请求,并将结果作为字节流接收


提前感谢您的帮助。

使用play VirtualFile来完成此操作

Play.getVirtualFile("public/images/foo.svg")

仅仅创建一个。。。在文件系统中为这些文件单独设置文件夹,并将它们上载到应用程序中


在发生更改的情况下,您不需要重新部署整个应用程序,而且您将拥有文件系统中文件的实际路径。顺便说一句,这对于其他静态(不需要编译)来说是个好主意,因为您需要在前端使用单独的HTTP服务器,或者编写一个操作将文件提供给浏览器(IMHO第一个选项更快)

顺便说一句,使用一种格式(PNG)不是更好吗对于每个浏览器?我使用的模块都包含SVG。问题是每次添加新的SVG时,我都必须转换SVG。绝大多数用户都有支持SVG的浏览器,所以我不想在每次向项目中添加新图像时都添加工作。因此,我们的想法是为IE6用户添加即时转换,而不再考虑它。