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,此时文件已上传到服务器中的一个临时目录(同时被注入到action中就是你看到的
doc),此临时目录由webwork.properties指定,你必须将此文件拷贝到你需要的目录,否则action执行完毕,此文件会被删除,准确
说是拦截器的后处理删除了临时文件,这一段结论的前提是你使用拦截器处理上传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传拦截器的时候应该避免使用execAndWait拦截器,否则很有可能会出现空指针,因为execAndWait拦截器会在另一个线程处理action,而原来的线程会删掉临时文件,所以当你在action中处理文件的时候很有可能文件已被删掉,虽然这并非一定会出现,但毕竟不安全 |