Struts 2ファイルのアップロードの例
ダウンロードする – リンク://wp-content/uploads/2010/06/Struts2-File-Upload-Example.zip[Struts2-File-Upload-Example.zip]
Struts 2では、ユーザーがローカルディスクからファイルを選択してサーバーにアップロードできるように、
<s:file>
タグを使用してHTMLファイルアップロードコンポーネントを作成します。このチュートリアルでは、ファイルアップロードコンポーネント、最大サイズ、およびアップロードファイル
のコンテンツタイプを許可するJSPページを作成し、アップロードされたファイルの詳細を表示します。
1.アクションクラス
ファイルアップロードのアクションクラス、ユーザーがアップロードしたファイルを格納する “File”変数、ファイル名とコンテンツタイプを格納する2つのString変数を宣言します。 ”
fileUploadインターセプタ
“は、アップロードされたファイルの詳細をset “X” ContentType()で自動挿入し、 “X” FileName()を設定します。メソッド名が正しく入力されていることを確認してください。
__P.S Xはアップロードされたファイルを格納する変数です。
ファイルのアップロード機能は、「
fileUploadインターセプタ
」に依存しますが、アクションのスタックに含まれていることを確認してください。幸いなことに、デフォルトのスタックにはすでに ”
fileUploadインターセプタ
“が含まれています。
package com.mkyong.common.action; import java.io.File; import com.opensymphony.xwork2.ActionSupport; public class FileUploadAction extends ActionSupport{ private File fileUpload; private String fileUploadContentType; private String fileUploadFileName; public String getFileUploadContentType() { return fileUploadContentType; } public void setFileUploadContentType(String fileUploadContentType) { this.fileUploadContentType = fileUploadContentType; } public String getFileUploadFileName() { return fileUploadFileName; } public void setFileUploadFileName(String fileUploadFileName) { this.fileUploadFileName = fileUploadFileName; } public File getFileUpload() { return fileUpload; } public void setFileUpload(File fileUpload) { this.fileUpload = fileUpload; } public String execute() throws Exception{ return SUCCESS; } public String display() { return NONE; } }
2.結果ページ
-
<s:file>
タグを使用してファイルアップロードコンポーネントをレンダリングし、フォームのenctypeタイプを “multipart/form-data”
に設定します。 -
fileupload.jsp **
<%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <s:head/> </head> <body> <h1>Struts 2 <s:file> file upload example</h1> <s:form action="resultAction" namespace="/" method="POST" enctype="multipart/form-data"> <s:file name="fileUpload" label="Select a File to upload" size="40"/> <s:submit value="submit" name="submit"/> </s:form> </body> </html>
-
result.jsp **
<%@ taglib prefix="s" uri="/struts-tags" %> <html> <body> <h1>Struts 2 <s:file> file upload example</h1> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-2836379775501347" data-ad-slot="8821506761" data-ad-format="auto" data-ad-region="mkyongregion"></ins> <script> (adsbygoogle = window.adsbygoogle ||[]).push({}); </script><h2> File Name : <s:property value="fileUploadFileName"/> </h2> <h2> Content Type : <s:property value="fileUploadContentType"/> </h2> <h2> File : <s:property value="fileUpload"/> </h2> </body> </html>
3. struts.xml
すべてのリンク〜
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true"/> <constant name="struts.custom.i18n.resources" value="global"/> <package name="default" namespace="/" extends="struts-default"> <action name="fileUploadAction" class="com.mkyong.common.action.FileUploadAction" method="display"> <result name="none">pages/fileupload.jsp</result> </action> <action name="resultAction" class="com.mkyong.common.action.FileUploadAction"> <interceptor-ref name="exception"/> <interceptor-ref name="i18n"/> <interceptor-ref name="fileUpload"> <param name="allowedTypes">text/plain</param> <param name="maximumSize">10240</param> </interceptor-ref> <interceptor-ref name="params"> <param name="excludeParams">dojo\..** ,^struts\..** </param> </interceptor-ref> <interceptor-ref name="validation"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> <interceptor-ref name="workflow"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> <result name="success">pages/result.jsp</result> <result name="input">pages/fileupload.jsp</result> </action> </package> </struts>
-
ファイルサイズの制限
+この例では、 ”
fileUploadインターセプタ** “を介してアップロードファイルのサイズ制限を設定します。この値はバイト数です。この場合、アップロードファイルの最大サイズは10kbです。
アップロードファイルのデフォルトの最大ファイルサイズは2MBです
-
ファイルタイプ
+ “fileUploadインターセプタ
“を介して許可ファイルタイプを設定することもできます。
この場合、アップロードファイルは ”
text/plain
“コンテンツタイプのみを受け入れます。
Struts 2では、同じローマを導く方法があるかもしれません。http://struts.apache.org/2.0.14/docs/file-upload.html[Struts 2 file upload documentation]をチェックしてください。
4.デモ
エラーメッセージは、10kb以上のファイルをアップロードした場合、またはテキストファイルをアップロードしなかった場合に表示されます。
“XWORK-LICENSE.txt”という名前のテキストファイルをアップロードします。ファイルサイズは5kbです。
アップロードされたファイルは一時ファイルとして扱われ、長いランダムなファイル名upload
__376584a7
12981122379
__8000
00000010.tmpがあります。この一時ファイルを別の場所にコピーしてください。ファイルを簡単にコピーするにはhttp://commons.apache.org/io/api-1.4/org/apache/commons/io/FileUtils.html[FileUtils.html[FileUtils documentation]を読んでください。
リファレンス
-
http://struts.apache.org/2.x/docs/file.html
[Struts 2ファイル
-
http://struts.apache.org/2.0.14/docs/how-do-we-upload-files.html
-
http://commons.apache.org/io/api-1.4/org/apache/commons/io/FileUtils.html
-
//struts/struts-file-upload-example/
リンク://タグ/ファイルアップロード/[ファイルアップロード]リンク://tag/struts2/[struts2]