2013-07-24 50 views
0

得到一個這樣的路線:動態路線不工作的資產在生產

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

,當我在公共/圖片/照片添加一些圖片/我想以這樣的URL來訪問它們http://localhost:9000/assets/images/pictures/test.jpg

它適用於服務器處於開發模式,但在生產中,我不得不重新啓動它,每次我添加圖像...

我怎麼能繞過呢?

問候。

回答

1

正如詹姆斯所說,Play的靜態資產控制器將文件從類路徑中拉出。你也可以定義一個你的應用程序之外的類路徑。

您可以通過在Build文件中定義以下行來完成此操作。

val assetDir = sys.props.get("java.io.tmpdir").get + "/outside-cp" 

val main = play.Project(appName, appVersion, appDependencies).settings(
    unmanagedClasspath in Runtime += file(assetDir), 
    unmanagedClasspath in Compile += file(assetDir), 
    unmanagedClasspath in Test += file(assetDir) 

現在創建以下目錄:

/tmp/outside-cp/assets 

截至去年,創建一個路由,你的外資產:

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

啓動應用程序並放置一個文件在資產目錄中。現在,您可以通過以下網址訪問該文件:

http://localhost:9000/outside/your-placed.file 

注:你不能直接使用的資源目錄的類路徑,因爲玩的資產控制器與路徑自動前綴指定的文件。並且定義一條空路徑不起作用。

如果您運行play stage來打包應用程序,那麼您必須更改啓動腳本以將類路徑添加到您的應用程序。

+0

好的,謝謝,我會寫我自己的控制器。我不需要在應用程序之外有一個資產文件夾。 – Falydoor

2

Play的靜態資產控制器將文件從類路徑中提取出來,而不是用於動態使用。如果您需要使用動態資產,那麼您需要編寫自己的控制器來處理這個問題。