Action中還有兩個屬性:uploadFileName和uploadContentType,這兩個屬性分別用於封裝上傳文件的文件名、文件類型。這是Struts2設計的獨到之處:Strut2的Action類直接經過File類型屬性直接封裝了上傳文件的文件內容,但這個File屬性沒法獲取上傳文件的文件名和文件類型,因此Struts2就直接將文件域中包含的上傳文件名和文件類型的信息封裝到uploadFileName和 uploadContentType屬性中,也就是說Struts2針對表單中名爲xxx的文件域,在對應的Action類中使用3個屬性來封裝該文件域信息:java
l 類型爲File的xxx屬性:用來封裝頁面文件域對應的文件內容。jsp
l 類型爲String的xxxFileName屬性:用來封裝該文件域對應的文件的文件名。this
l 類型爲String的xxxContentType屬性:用來封裝該文件域應用的文件的文件類型。設計
如下是實際java代碼:code
jsp頁面:<input type="file" id="upload" name="upload"/> 這個name就是與Action的屬性對應input
Action類代碼:io
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 方法就能夠。file
特別注意:<s:file/>標誌不單單是綁定到upload,還有uploadContentType(上傳文件的MIME類型)和uploadFileName(上傳文件的文件名,該文件名不包括文件的路徑)。所以,<s:file name="xxx" />對應Action類裏面的xxx、xxxContentType和xxxFileName三個屬性。方法