step1:
頁面定義如下
<form action="upload.do" enctype="multipart/form-data" method="post">
<input type="file" name="doc"/>
......................... 省略
</form>
step2
action 如下
public class UploadAction extends ActionSupport {
.....................................
private File doc;//doc與頁面取一樣的名字
public void setDoc(File doc) {
this.doc = doc;
}
//當然還可以使用以下的咚咚
/*
* public void setDocContentType(String docContentType) {
* this.docContentType = docContentType; }
*
*//**
*
* @author weip
* @time 0:23:24 2006-5-11
* @param docFileName
*/
/*
* public void setDocFileName(String docFileName) { this.docFileName =
* docFileName; }
*/
/**
*
*/
/*
* private String docContentType;
*
*//**
*
*/
/*
* private String docFileName;
*/
.............................................................
}
當程序進入到action當中時,你可以開始處理上面代碼中的doc,此時文件已上傳到服務(wù)器中的一個臨時目錄(同時被注入到action中就是你看到的 doc),此臨時目錄由webwork.properties指定,你必須將此文件拷貝到你需要的目錄,否則action執(zhí)行完畢,此文件會被刪除,準確說是攔截器的后處理刪除了臨時文件,這一段結(jié)論的前提是你使用攔截器處理上傳
step3
處理配置文件,配置攔截器
<action name="upload" class="com.mofile.baby.web.action.signup.UploadAction">
<result name="success" type="freemarker">/page/signup/uploadfile.htm</result>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="defaultWebStack"/>
</action>
step4
對于webwork.properties的一些處理
webwork in action上推薦使用webwork.multipart.parser=jakarta而不是默認的 pell,如果使用前者,不要忘了在你的lib中加入commons-fileupload.jar
需要注意的問題:
你在使用fileUpload傳攔截器的時候應(yīng)該避免使用execAndWait攔截器,否則很有可能會出現(xiàn)空指針,因為execAndWait攔截器會在另一個線程處理action,而原來的線程會刪掉臨時文件,所以當你在action中處理文件的時候很有可能文件已被刪掉,雖然這并非一定會出現(xiàn),但畢竟不安全