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]