看一下我的非常类似的问题:从Play目录结构外部直接提供文件,最后我在非常基本的示例中使用了第二个建议,它可以显示为:
public static Result serve(String filepath){ // some stuff if required return ok(new File("/home/user/files/"+filepath));}路由(使用星号with
*filepath允许内部带有斜杠的字符串):
GET /files/*filepath controllers.Application.serve(filepath : String)
视图(
@之前缺少字符
photo.path并非偶然)
<img src="@routes.Application.serve(photo.path)" alt="@photo.alt" />
编辑:
如果您具有
HTTPserver创建指向目录的新子域/别名的能力,那么您当然不需要通过控制器提供文件。在这种情况下,您可以将链接存储为
http://pics.domain.tld/holidays_2012/1.jpg甚至更好
holidays_2012/1.jpg(然后将其存储在带有子域的模板中)。
最后,您可以设置一些别名,即。与Apache一起
domain.tld/*用作Play应用程序的
domain.tld/pics/*指针和某些文件夹的指针
<VirtualHost *:80> ProxyPreserveHost On ServerName domain.tld ProxyPass /pics ! ProxyPass / http://127.0.0.1:9000/ ProxyPassReverse / http://127.0.0.1:9000/ Alias /pics/ /home/someuser/somefolder_with_pics/ <Directory /home/someuser/somefolder_with_pics/> Order allow,deny Allow from all </Directory></VirtualHost>
在这种情况下,重要的是要到位
ProxyPass /pics !之前
ProxyPass / http://...



