struts檔案上傳,獲取檔名和檔案型別

Rachel_fun發表於2014-03-25
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 方法就可以。

特別注意:,<s:file/>標誌不僅僅是繫結到upload,還有uploadContentType(上傳檔案的MIME型別)和uploadFileName(上傳檔案的檔名,該檔名不包括檔案的路徑)。因此,<s:file name="xxx" />對應Action類裡面的xxx、xxxContentType和xxxFileName三個屬性。

相關文章