gpt4 book ai didi

scala - Play : additional public/assets directory

转载 作者:行者123 更新时间:2023-12-04 12:08:25 24 4
gpt4 key购买 nike

为了有一个干净的目录结构,我想公开一个额外的 Assets 文件夹。我在我的项目文件夹中创建了一个目录“assets”,编写了一个与“controller.Assets”几乎相同的“PictureAssets” Controller ,将“assets”添加到 build.sbt 中的 playAssetsDirectories 并尝试遵循一些路由条目而没有成功。

图片 Assets :

package controllers

import play.api.mvc.Action
import play.api.mvc.AnyContent

object PictureAssets extends AssetsBuilder {
def create : Action[AnyContent] = Action {
Ok(views.html.fileUploadForm())
}
}

生成.sbt
playAssetsDirectories <+= baseDirectory / "assets"

路线
# GET     /file                 controllers.PictureAssets.at(path="/assets", file="MM1.png")
GET /datei/*file controllers.PictureAssets.at(path="/assets", file)
# GET /datei/*file controllers.Assets.at(path="/assets", file)

如果我尝试访问该 URL,则要么不显示任何内容,要么显示错误“图像 http:9000//localhost/datei/MM1.png 无法显示,因为它包含错误”或“处理的 css 引用” controller.Assets' 不再起作用。

我错过了什么?

最佳答案

我认为问题来自于 at使用的方法是 Assets 以前使用的默认方法.

去年的某个时候我遇到了同样的问题,我想提供将存储在外部文件夹中的图像,该文件夹位于磁盘上的某个位置,这是我编码的方式:

我创建了一个名为 Photos 的简单 Controller ,其中包含一个 Action:

object Photos extends Controller {

val AbsolutePath = """^(/|[a-zA-Z]:\\).*""".r

/**
* Generates an `Action` that serves a static resource from an external folder
*
* @param absoluteRootPath the root folder for searching the static resource files.
* @param file the file part extracted from the URL
*/
def at(rootPath: String, file: String): Action[AnyContent] = Action { request =>
val fileToServe = rootPath match {
case AbsolutePath(_) => new File(rootPath, file)
case _ => new File(Play.application.getFile(rootPath), file)
}

if (fileToServe.exists) {
Ok.sendFile(fileToServe, inline = true)
} else {
Logger.error("Photos controller failed to serve photo: " + file)
NotFound
}
}

}

然后,在我的 route ,我定义了以下内容:
GET /photos/*file   controllers.Photos.at(path="/absolute/path/to/photos",file)

这对我来说很好。希望这可以帮助。

PS:这是除了正常的 Assets帮助提供 js 和 css 文件的 Controller 。

关于scala - Play : additional public/assets directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22146586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com