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 の Web サイトから回答を得ました

このページから:

ただし、Assets.at アクションに対して 2 つのマッピングを定義すると、次のようになります。

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")">

しかし、これはまだ私の問題を解決していない可能性があります。質問の2番目のエラーの言及が表示されることが判明しました。

注意してください。pathパラメータを確認してください。ルートファイルに記述したものと同じでなければなりません。なので:

私が設定したとき: GET /public/*file controllers.Assets.at(path="/public", file)

html ファイルでは、次のように記述します。

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


さらに、/upload などの別のフォルダーを使用する場合は、以下のコードを に追加することproject/Build.scalaplay.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 に答える