1)、关于上传表单三要素
>>尽量以POST请求方式上传,因为GET支持文件大小是有限制的。
>>必须要加上enctype="multipart/form-data"表示上传的文件,以随着请求体经过特殊编码后,一同传入服务器
>>每个表单项,必须取一个名字(name),因为服务器端便于通过名字(name)收集信息.
2)、fileUpload拦截器文件上传拦截器,自动注入三个参数,如下所示:
private String uploadContentType;//上传文件的类型,(Fileupload拦截器传入的参数)
private File upload;//上传的文件,(Fileupload拦截器传入的参数)
private String uploadFileName;//上传文件的真实文件名,(Fileupload拦截器传入的参数)
与jsp页面中的name相对应.
注意:upload和表单项与中的name属性一致
upload拼上contentType其中C要大写.
复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
复制代码
3)框架自身有fileUpload文件上传拦截器
4)、代码分析
UploadAction.java
View Code
upload_success.jsp
View Code
upload.xml
复制代码
< xml version="1.0" encoding="UTF-8" >
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
/WEB-INF/upload_success.jsp
复制代码
struts.xml
复制代码
< xml version="1.0" encoding="UTF-8" >
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
复制代码
程序运行逻辑:
浏览器中输入:http://localhost:8080/struts2_learn/upload.
jsp---》输入用户名,选择要上传的文件---》点击提交---》触发UploadAction---》从内存中查找对应的配置文件struts.xml->upload.xml->UploadAction.java,若调用成功--》数据转发到upload_success.jsp。
5)效果如下图所示:
成功上传提示:
二、文件上传快速入门提高
1)如何将上文件上传者的姓名显示出来,如何将文件类型,以及文件名显示出来?将upload_success.jsp改写如下:
复制代码
恭喜,上传文件成功!
上传用户名:
文件类型:
上传的文件:
上传文件的真实文件名: