Struts 2シングルファイルアップロード


1.必要なjarパッケージ:


(1)commons-fileupload-1.2.2.jar
(2)commons-io-2.0.1.jar

2.JSP


1、フォームはpost方式で提出しなければならない
2、フォームエンコーディングタイプ
 enctype="multipart/form-data"

3、fileラベルにname属性を書く必要がある
<s:file label=" :" name="upload"></s:file>

htmlコードを添付:
<s:form action="upload.action" theme="simple" namespace="/" method="post" enctype="multipart/form-data">
    <s:file label=" :" name="upload"></s:file>
    <s:submit value=" "></s:submit>
</s:form>

3.Action


1.3つのメンバー変数の命名には、次のような仕様があります.
(1)private File uploadのupoloadと同じように、あなたがアップロードしたコミットページのname属性値と一致させる(2)ファイルタイプとファイル名の命名は、ページname属性値+ContentType、ページname属性値+FileName
すなわち、Actionでは、以下のように定義されるべきである.
private File upload;                    // name 
private String uploadContentType;       // +ContentType
private String uploadFileName;          // +FielName

2.setterメソッドを提供し、対応するデータを受信する
3.対象ファイルの保管場所を定義し、commons-io-2.0.1.JArパッケージが提供するFileUtilsツールクラスは、アップロードファイルを指定した場所にコピーします.
アクション付きコード:
public class UploadAction extends ActionSupport {

//<s:file label=" :" name="upload"></s:file> //html file 

    private File upload;                     // name 
    private String uploadContentType;       // +ContentType
    private String uploadFileName;         // +FielName

    public void setUpload(File upload) {
        this.upload = upload;
    }

    public void setUploadContentType(String uploadContentType) {
        this.uploadContentType = uploadContentType;
    }

    public void setUploadFileName(String uploadFileName) {
        this.uploadFileName = uploadFileName;
    }

    public String upload() {
        File destFile = new File(ServletActionContext.getServletContext()
                .getRealPath("/uploads")
                + "/" + uploadFileName);
        try {    
            // 
            FileUtils.copyFile(upload, destFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return SUCCESS;
    }
}

ファイルのダウンロードを参照http://blog.csdn.net/sunglee_1992/article/details/53033498