2017-03-09 53 views
4

使用图像我想设置为背景位于/public/images/my-image.jpg从公用文件夹

图像我已经试过

<body background="public/images/my-image.jpg"> 

<body background="images/my-image.jpg"> 

<body background="my-image.jpg"> 

但我总是ge在Chrome控制台上输入t 404 (Not Found)。任何想法为什么?

我也尝试添加此:

<style> 
    body { 
     background-image: url("/public/images/my-image.jpg"); 
    } 
</style> 

但没有出现在页面的背景。

回答

1

据我了解,你有一个问题playframework获得的资产。 请按照assets的播放框架文档。

要从公共目录获取资产(如果您尚未更改默认路由或资产控制器),则需要使用assets/而不是public/的路径。 或更优选使用反向路由器。在你的情况打2.5倍这将是:

<body background="@routes.Assets.versioned("images/my-image.jpg")">

使用反向路由或

<body background="assets/images/my-image.jpg">

硬编码路径。

1

你需要有一个记录在routes文件

GET  /assets/*file    controllers.Assets.versioned(path="/public", file: Asset) 

然后你就可以访问这些文件在public文件夹与捻帮手:

<body background="@routes.Assets.versioned("images/my-image.jpg")"> 

它会被编译成

<body background="/assets/images/my-image.jpg")"> 

你可以把它当作静态文本为好。

如果你想改变“资产”,以“公开”或什么,只是改变它在routes文件:

GET  /public/*file    controllers.Assets.versioned(path="/public", file: Asset) 

那么你的资产将进入由public路径,如:

<body background="/public/images/my-image.jpg")"> 

尽管如此,@routes.Assets.versioned将是相同的:

<body background="@routes.Assets.versioned("images/my-image.jpg")"> 

这就是为什么@routes.Assets.versioned是首选的方式。