Action中還有兩個屬性:uploadFileName和uploadContentType,這兩個屬性分別用於封裝上傳文件的文件名、 文件類型。這是Struts2設計的獨到之處:Strut2的Action類直接經過File類型屬性直接封裝了上傳文件的文件內容,但這個File屬性 沒法獲取上傳文件的文件名和文件類型,因此Struts2就直接將文件域中包含的上傳文件名和文件類型的信息封裝到uploadFileName和 uploadContentType屬性中,也就是說Struts2針對表單中名爲xxx的文件域,在對應的Action類中使用3個屬性來封裝該文件域 信息:
l 類型爲File的xxx屬性:用來封裝頁面文件域對應的文件內容。
l 類型爲String的xxxFileName屬性:用來封裝該文件域對應的文件的文件名。
l 類型爲String的xxxContentType屬性:用來封裝該文件域應用的文件的文件類型。
如下是實際java代碼:
jsp頁面:
<input type="file" id="upload" name="upload"/> 這個name就是與Action的屬性對應
Action類代碼:
private File upload;
private String uploadFileName;
private String uploadContentType;
public void setUpload(File upload) {
this.upload = upload;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
設置3個屬性。分別給set方法. 這樣子,就可以獲取上傳的文件,文件名,文件類型。
注意:這個uploadFileName,uploadContentType。若是File 屬性名xxx(private File xxx;) 。那這個必須是xxxFileName, xxxContentType。而後也是分別給set 方法就能夠。 java
jsp代碼 jsp
<s:form action="mperson_upLoadImage.action" method="post" enctype="multipart/form-data">
<input type="file" name="photo" />
<s:submit />
</s:form> post
特 別注意:,<s:file/>標誌不單單是綁定到upload,還有uploadContentType(上傳文件的MIME類型)和 uploadFileName(上傳文件的文件名,該文件名不包括文件的路徑)。所以,<s:file name="xxx" />對應Action類裏面的xxx、xxxContentType和xxxFileName三個屬性。