0

複数の Play アプリで共有される Play モジュールの一部である SVG 画像ファイルのセットがあります。SVG (*咳* IE6) をサポートしない古いブラウザー用に、ブラウザーのユーザー エージェント文字列に基づいて、これらを PNG 形式に変換するコントローラーを作成しました。

これを機能させるには、元の SVG ファイルにアクセスする必要があります。ただし、ファイルはモジュールの/public/imagesディレクトリまたはアプリケーションのディレクトリにある場合があります。Play ルーターは、どちらの場合もシームレスに解決できます (つまり、ファイルがアプリケーションのディレクトリにあるかアプリケーションのディレクトリにある/public/images/foo.svgかにかかわらず、GET 要求は常に機能します)。そこで、Play のルーター ロジックを利用してファイルを見つけ、その絶対パスを取得し、それを変換ライブラリにフィードしたいと思います。foo.svg/public/images/public/images

これは可能ですか?Play のクラスでいくつかのメソッドを試しましRouterたが、ファイルが見つかりませんでした。おそらく、通常のルーティング ロジックを介してサーバー内である種の内部 GET 要求を作成し、結果をバイト ストリームとして受け取る方法があるでしょうか?

よろしくお願いします。

4

2 に答える 2

1

これを行うには play VirtualFile を使用します

Play.getVirtualFile("public/images/foo.svg")
于 2012-10-16T12:08:24.233 に答える
0

そのようなファイル用にファイルシステムに別のフォルダーを作成して、アプリケーションとは別にアップロードする方が簡単ではありませんか?

変更の場合、アプリケーション全体を再デプロイする必要はありません。また、ファイル システム内のファイルへの実際のパスを取得できます。ところで、フロントエンドで別のHTTPサーバーを使用するか、ファイルをブラウザに提供するためのアクションを記述する必要があるなど、とにかく他の静的(コンパイルを必要としない)には良い考えです(私見の最初のオプションはより高速です)

于 2012-10-16T12:57:38.203 に答える