1

我将文件上传到/upload文件夹,然后我想直接访问我的文件,例如:

http://localhost/upload/xxx.jpg

当我添加如下路线时:

GET     /upload/*file               controllers.Assets.at(path="/upload", file)

它会导致另一个错误:

not enough arguments for method at: (path: String, file: String)play.api.mvc.Call. Unspecified value parameter file.

<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">

然后,在我更改@routes.Assets.at("stylesheets/main.css")为之后@routes.Assets.at("stylesheets/", "main.css"),还有另一个错误:

[MatchError: (stylesheets/,main.css) (of class scala.Tuple2)]

(path: @unchecked, file: @unchecked) match {

有人可以帮我走这条路吗?谢谢。

4

2 回答 2

3

最后,我从 playframework 网站得到了答案,找到的不是很明显.. http://www.playframework.com/documentation/2.0.4/Assets

从这个页面:

但是,如果您为 Assets.at 操作定义两个映射,如下所示:

GET  /javascripts/*file        controllers.Assets.at(path="/public/javascripts", file)
GET  /images/*file             controllers.Assets.at(path="/public/images", file)

然后在使用反向路由器时需要指定这两个参数:

<script src="@routes.Assets.at("/public/javascripts", "jquery.js")"></script>

<image src="@routes.Assets.at("/public/images", "logo.png")">

但这可能还不能解决我的问题,结果出现了问题中提到的第二个错误。

请注意,检查path参数,它必须与您在路由文件中描述的相同。作为:

当我设置: GET /public/*file controllers.Assets.at(path="/public", file)

在 html 文件中,我应该写如下:

@routes.Assets.at("/public", "stylesheets/main.css")


此外,如果您使用其他文件夹,例如 /upload,则必须project/Build.scala在其中添加以下代码。play.Project感谢蒂齐亚诺皮卡尔迪

playAssetsDirectories <+= baseDirectory / "foo"

于 2013-03-11T12:11:58.337 回答
0

您应该在project/Build.scala中添加这一行:

  val main = play.Project(appName, appVersion, appDependencies).settings(
    // Add your own project settings here    
    playAssetsDirectories <+= baseDirectory / "upload"
  )

更多信息: https ://github.com/playframework/Play20/wiki/Assets

于 2013-03-11T11:02:53.597 回答