0

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

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

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

在此先感谢您的帮助。

4

2 回答 2

1

使用 play VirtualFile 来执行此操作

Play.getVirtualFile("public/images/foo.svg")
于 2012-10-16T12:08:24.233 回答
0

在文件系统中为此类文件创建单独的文件夹并将它们上传到应用程序之外不是更容易吗?

如果发生更改,您无需重新部署整个应用程序,并且您将拥有文件系统中文件的真实路径。顺便说一句,这对于其他静态(不需要编译)来说是个好主意,这样你就需要在前端使用单独的 HTTP 服务器或编写一个操作来将文件提供给浏览器(恕我直言,第一个选项更快)

于 2012-10-16T12:57:38.203 回答