Struts-2-struts-file-uploads
Struts 2-ファイルのアップロード
Struts 2フレームワークは、「HTMLでのフォームベースのファイルアップロード」を使用してファイルアップロードを処理するための組み込みサポートを提供します。 ファイルがアップロードされると、通常は一時ディレクトリに保存され、データが失われないようにするために、Actionクラスによって処理または移動される必要があります。
注-サーバーには、一時ディレクトリおよびWebアプリケーションに属するディレクトリ以外のディレクトリへの書き込みを禁止するセキュリティポリシーが設定されている場合があります。
Strutsでのファイルのアップロードは、org.apache.struts2.interceptor.FileUploadInterceptorクラスを通じて利用可能で、* defaultStack の一部として含まれている *FileUpload インターセプターと呼ばれる事前定義されたインターセプターによって可能です。 以下に示すように、struts.xmlでそれを使用してさまざまなパラメーターを設定できます。
ビューファイルを作成する
選択したファイルを参照してアップロードするために必要なビューの作成から始めましょう。 だから、ユーザーがファイルをアップロードできるプレーンHTMLアップロードフォームで index.jsp を作成しましょう-
上記の例には、注目に値する点がいくつかあります。 最初に、フォームのenctypeが multipart/form-data に設定されます。 これは、ファイルのアップロードがファイルアップロードインターセプターによって正常に処理されるように設定する必要があります。 次の点は、フォームのアクションメソッド upload とファイルアップロードフィールドの名前( myFile )です。 アクションメソッドとStruts構成を作成するには、この情報が必要です。
次に、単純なjspファイル success.jsp を作成して、ファイルアップロードが成功した場合の結果を表示します。
以下は、ファイルのアップロード中にエラーが発生した場合の結果ファイル error.jsp です-
アクションクラスの作成
次に、 uploadFile.java というJavaクラスを作成します。このクラスは、ファイルのアップロードと、そのファイルの安全な場所への保存を処理します-
FileUploadインターセプターは、デフォルトで3つのパラメーターを使用可能にします。 彼らは次のパターンで命名されています-
- [ファイル名パラメータ] -これは、ユーザーがアップロードした実際のファイルです。 この例では、「myFile」になります
- [ファイル名パラメータ] ContentType -これは、アップロードされたファイルのコンテンツタイプです。 この例では、「myFileContentType」になります
- [ファイル名パラメータ] FileName -これはアップロードされたファイルの名前です。 この例では、「myFileFileName」になります
Struts Interceptorsのおかげで、3つのパラメーターを使用できます。 行う必要があるのは、Actionクラスに正しい名前で3つのパラメーターを作成することです。これらの変数は自動的に自動接続されます。 そのため、上記の例では、3つのパラメーターと、すべてが正常に終了した場合に「成功」を返すアクションメソッドがあり、それ以外の場合は「エラー」を返します。
構成ファイル
以下は、ファイルのアップロードプロセスを制御するStruts2構成プロパティです-
Sr.No | Properties & Description |
---|---|
1 |
struts.multipart.maxSize ファイルのアップロードとして受け入れられるファイルの最大サイズ(バイト単位)。 デフォルトは250Mです。 |
2 |
struts.multipart.parser マルチパートフォームのアップロードに使用されるライブラリ。 デフォルトでは jakarta |
3 |
struts.multipart.saveDir 一時ファイルを保存する場所。 デフォルトではjavax.servlet.context.tempdirです。 |
これらの設定を変更するには、アップロードするファイルの最大サイズを変更するのと同じように、アプリケーションのstruts.xmlファイルで constant タグを使用できます。
次のように struts.xml を用意しましょう-
maximumSizeパラメーターは、許可される最大ファイルサイズを設定します(デフォルトは約2MBです)。 allowedTypesパラメータは、以下に示すように、受け入れられたコンテンツ(MIME)タイプのコンマ区切りリストです-
以下は web.xml ファイルの内容です-
次に、プロジェクト名を右クリックし、[エクスポート]> [WARファイル] をクリックして、WARファイルを作成します。 次に、このWARをTomcatのwebappsディレクトリにデプロイします。 最後に、Tomcatサーバーを起動して、URL *http://localhost:8080/HelloWorldStruts2/upload.jsp にアクセスしてみます。 これにより、次の画面が生成されます-
[参照]ボタンを使用してファイル「Contacts.txt」を選択し、アップロードボタンをクリックしてファイルをサーブにアップロードすると、次のページが表示されます。 アップロードされたファイルがC:\ apache-tomcat-6.0.33 \ workに保存されていることを確認できます。
FileUpload Interceptorはアップロードされたファイルを自動的に削除するため、削除される前に、アップロードされたファイルをプログラムで特定の場所に保存する必要があります。
エラーメッセージ
fileUplaodインターセプターはいくつかのデフォルトのエラーメッセージキーを使用します-
Sr.No | Error Message Key & Description |
---|---|
1 |
struts.messages.error.uploading ファイルをアップロードできなかったときに発生する一般的なエラー。 |
2 |
struts.messages.error.file.too.large アップロードされたファイルがmaximumSizeで指定された大きすぎる場合に発生します。 |
3 |
struts.messages.error.content.type.not.allowed アップロードされたファイルが、指定された予想されるコンテンツタイプと一致しない場合に発生します。 |