1. 程式人生 > >檔案上傳下載時,在form表單中設定屬性enctype=“multipart/form-data”的情況下,如何獲取表單提交的值?

檔案上傳下載時,在form表單中設定屬性enctype=“multipart/form-data”的情況下,如何獲取表單提交的值?

一、問題描述

檔案上傳下載時,在form表單中設定屬性enctype=“multipart/form-data”的情況下,如何獲取表單提交的有關使用者資訊的值?(比如:textfield、radio等屬性中的值)

二、解決方法

1、情況一:沒有對user物件進行封裝
方法:可在form表單對應的action(xxx.java)中定義相應的屬性,實現對應的set和get方法,然後在顯示頁面中使用<s:property value="name"/>語句即可獲得表單中的值。
例:
uploadFile.jsp:頁面中定義了textfield屬性<s:textfield name="name" label="姓名" size="20"/>

,在對應的action中定義相應的屬性

<s:form action="docUpload" method="post" enctype="multipart/form-data">
    <s:textfield name="name" label="姓名" size="20"/>
    <s:file name="upload" label="選擇文件" size="20"/>
    <s:file name="upload" label="選擇文件" size="20"/>
    <s:submit value="確認上傳" align
="center"/>
</s:form>

DocUploadAction.java:對應上面form表單的action,定義了name屬性

public class DocUploadAction extends ActionSupport {

    private String name;
    private File[] upload;
    private String[] uploadContentType;
    private String[] uploadFileName;
    private String savePath;

    public
String getName() { return name; } public void setName(String name) { this.name = name; } .... ....省略其他程式碼

showFil.jsp:使用<s:property value="name"/>語句即可獲得值

<td align="center"><s:property value="name"/></td>

2、情況二:為了實現更好的封裝,可將使用者資訊封裝到User物件中。
方法:可在form表單中的name值均採用“user.屬性名”,對應的action(xxx.java)中定義user物件,實現對應的set和get方法,然後在顯示頁面中使用<s:property value="user.name"/>語句即可獲得表單中的值。
例:
uploadFile.jsp:<s:textfield name="user.name" label="姓名" size="20"/>注:name的值都要用user物件.屬性名

<s:form action="user" method="post" enctype="multipart/form-data">
    <s:textfield name="user.name" label="姓名" size="20"/>
    <s:file name="upload" label="照片" size="20"/>
    <s:textfield name="user.age" label="年齡" size="20"/>
    <s:radio list="#{'1':'','2':'' }" name="user.sex" value="1" label="性別" cssStyle="border:0px;"/>
    <s:textfield name="user.address" label="籍貫" size="20"/>
    <s:submit value="確定錄入" align="center"/>
</s:form>

DocUploadAction.java:建立User物件,並實現set和get方法

public class UserAction extends ActionSupport {

    private static final int BUFFER_SIZE=40*40;
    private File upload;               //封裝上傳檔案域的屬性
    private String uploadContentType;  //封裝上傳檔案的型別
    private String uploadFileName;     //封裝上傳檔名
    private String savePath;          //封裝上傳檔案的儲存路徑
    private User user;                //建立user物件

    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }

showFil.jsp:使用<s:property value="user.name"/>語句即可獲得值

<td align="center"><s:property value="user.name"/></td>

轉載請註明!謝謝!