3

現在、play フレームワーク 2 を使用して Web アプリを開発しています。/public ディレクトリの下に「files」フォルダーを作成しました。「play run」を使用してサーバーを起動すると、そのディレクトリの下のすべてのリソースにアクセスできました。

サーバーへのデプロイ後。「play start」を実行してサーバーを起動しましたが、「files」の下のリソースが見つからないことがわかりました。

「プレイ開始」と「プレイラン」の不一致の原因は何なのか気になります

更新: いくつかの試行の後。新しくアップロードされたリソースを表示できないことがわかりました。シナリオは次のとおりです。

1. play start --> server starts.
2. use application to upload a few images to the server.
3. try to display the uploaded image --> nothing is shown. browser shows the resource is not accessible.
4. kill the server process with task manager.
5. rm RUNNING_PID
6. run play start again 
7. Try to display the uploaded image --> now the images are showing.

それで、「再生開始」の「ホットアップデート」の問題のように見えます。サーバーに変更を反映させるためにできる設定はありますか? ありがとう。

4

2 に答える 2

6

画像を正確にどこに保存しましたか?コンパイル時に、静的アセットが から にコピーさ/public/target/scala-2.9.1/classes/publicます。このディレクトリはクラスパスの一部であり、アセットはそこから提供されます。したがって、実行時にそこにファイルを保存すると、それらが見つかるはずです。

補足: ユーザーがロードしたイメージは次回のビルド時に削除されるため、おそらく持続可能なソリューションではありません。アプリのインストール以外でシンボリック リンクを使用することを検討する必要があるかもしれません (セキュリティ上の問題に注意してください!)。アセットを別の場所に保存する必要があります。データベースまたは S3 は常に適切な代替手段です。

于 2012-05-27T14:35:16.043 に答える
2

@Joerg Viola の回答に基づいています。静的リソースを提供する独自のアクションを実装することにしました。非常に簡単であることがわかります。からthis link、ファイル サーバーを 1 行で実装する方法を学びました。

于 2012-05-29T16:45:38.760 に答える