Play框架的主要功能是提供动态响应的内容。但一个网络项目中必然有大量的静态内容,比如图片、Javascript文件、CSS文件等。我下面介绍如何在Play项目中加入静态文件。
默认路径
Play项目的静态文件一般存储在根目录下的public文件夹。新建Play项目时,routes文件会有下面的默认记录:
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.at(path="/public", file)
该记录将/assets/下的URL,对应到项目的/public文件夹内的文件。比如在项目的/public/images/test.jpg,就可以通过/assests/images/test.jpg这一URL访问:
其它类型的静态文件,也都可以放入/public文件夹中。
在Play的模板中,也可以利用@routes.Assets.at("images/test.jpg")的方式,来调用静态文件的URL。
文件上传
客户有时需要自行上传文件。我可以通过一个表单来让客户上传。表单的模板app/views/upload.scala.html为:
@helper.form(action = routes.Application.upload, 'enctype -> "multipart/form-data") {
}
增加动作uploadForm(),用于显示该模板:
public static Result uploadForm() {
return ok(views.html.upload.render());
}
文件上传的界面如下:
对于表单提交,我用动作upload()来处理: