struts2に画像をアップロードしようとすると、画像がアップロードされず、次のメッセージが表示されません。「struts.multipart.saveDir」プロパティ設定が見つかりません。デフォルトはjavax.servlet.context.tempdir
2 に答える
S2のビルドdin機能が原因でこのメッセージが表示されます。ファイルstruts.multipart.saveDir
内のプロパティを使用して、またはファイル内struts.property
の定数として、アップロードされたファイルをどこに配置するかをS2ファイルアップロードインターセプターに指示する必要があります。struts.xml
Strutsプロパティファイル
struts.multipart.saveDir=location of your choice
struts.xmlファイル
<constant name="struts.multipart.saveDir" value="your location" />
このプロパティが設定されていない場合、デフォルトでjavax.servlet.context.tempdir
.Sine S2になります。saveDirを指定していない場合は、アップロードファイルを一時ディレクトリに配置しますが、プロセスが完了すると、クリーンアッププロセスのために、その一時ファイルが削除されます。 saveDirパラメーターを設定したか、アクションクラスにロジックを配置して、そこからファイルを選択し、選択した場所に移動する必要があります。
S2ファイルのアップロードの詳細については、公式ドキュメントをお読みください
これは手動設定です。ファイルをアップロードしたら、ファイルを保存するために明示的に処理する必要があります(セキュリティ上の理由から、サーバーはファイルをすぐに削除します)。
import org.apache.commons.io.FileUtils;
String fullFileName = "d:/temp/"+uploadFileName;
File destFile = new File(fullFileName);
FileUtils.copyFile(upload, destFile);
ソース:FileUpload
struts.propertiesファイルで設定できます
struts.multipart.saveDir-アップロードされたファイルが配置されるディレクトリ。このプロパティが設定されていない場合、デフォルトでjavax.servlet.context.tempdirになります。
アップロードしたファイルを/tmpに入れます。私のアプリケーションはそれらを最終的な目的地に移動します
struts.multipart.saveDir=/tmp