2017-12-06 34 views
0

tmpファイルのデフォルトパスは何ですか?例えば、ファイルをサーバにアップロードした後、playframeworkはそれらをtmpフォルダに置きます。どのフォルダがplayframeworkを使用していますか?私はどんなドキュメントも見つけることができませんでした。私はこのtmpフォルダのパスを知っている場合、私はそれを使用してtmpファイルを取得することができます。 私はplayframework 2.6のバージョンを使用しています。Playフレームワークのデフォルトのtmpフォルダパス

編集:そのファイルを作成するためにplay.api.libs.Files.DefaultTemporaryFileCreatorと呼ばれるクラスを使用するデフォルトのプレイではscalaタグ

答えて

1

を追加しました。このクラスはjava.nio.file.Files.createTempDirectory("playtemp")を使用してその一時ディレクトリを作成します。私はあなたが非常に簡単にこのディレクトリの場所を得ることができるとは思わない。

あなたはTemporaryFileCreatorをオーバーライドして、独自の実装を注入する依存性注入(JavaScala)を使用して、独自のロジックを提供することができます。

アップロードされたファイルにアクセスしたい場合は、リクエスト中に一時的なファイルにアクセスできます。 Java APIでは、MultipartFormData.getFilesを呼び出してください。 Scala API呼び出しでMultipartFormData.file("name")を呼び出します。これらの通話はあなたにFilePartを与えるでしょう。 JavaではFileFilePartfileフィールドに格納されています。 Scalaではrefのプロパティにあります。

+0

有益な情報ありがとうございます。私の場合はこのように:ユーザーはファイルをサーバーAにアップロードします。その後、サーバーAはこの一時ファイル名をサーバーBに送信します。その後、サーバーBはサーバーAからこの一時ファイルのダウンロードを開始します。だから私はサーバーAでこの一時ファイル名を検証し、一時ファイルフォルダからこのファイルを取得します。私はサーバーBに完全なファイルパスを送信するのは好きではありません。サーバーAのファイルパスを検証する(セキュリティチェック)のが難しいため、 – Ikrom

+1

アップロード中に作成されたファイルにアクセスし、あなた自身の命名システムそうすることで、好きなように名前を制御できます(たとえば、乱数やUUIDを使用するなど)。ファイルを別のディレクトリに移動すると、アクションの実行が終了したときに一時ファイルのクリーンアップが停止されます。 「TemporaryFile」がガベージコレクションされると、Playはファイルをクリーンアップすると思います。 –

関連する問題