開発者ドキュメント

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]を読んでください。

リファレンス

リンク://タグ/ファイルアップロード/[ファイルアップロード]リンク://tag/struts2/[struts2]

モバイルバージョンを終了