PlayFrameworkを使用してファイルをアップロードしようとしています。以下のようにフォームと対応するコントローラーを作成します。
<form action="@{Admin.testUpload()}" method="POST" enctype="multipart/form-data">
<input type="text" name="title" />
<input type="file" name="f1" />
<input type="file" name="f2" />
<input type="submit" value="Send it..." />
</form>
public static void testUpload(File f1, File f2) {
System.out.println(f1.getName());
System.out.println(f2.getName());
}
これで問題ありません。インスタンスf1とf2でファイルを取得できます。ただし、ファイルインスタンスを別のメソッドに渡したい場合は、nullポインタ例外が発生します。そのような :
public static void testUpload(File f1, File f2) {
test2(f1);
}
public static void test2(File f1) {
System.out.println(f1.getName());
}
test2メソッド内で例外が発生します。そして、playframeworkがtmpフォルダーから画像を取得しようとしていることがわかりました。playframeworkは自動的にファイルをtmpフォルダーにアップロードし、アップロードしたファイル名でフォルダーを作成するようです。
プレイメカニズムですか?