1.文件的上传主要要抓住两个点:
1.1 文件放在哪,即文件的保存位置?
获取文件保存的真实路径
ServletContext applcation = ServletActionContext.getServletContext();
String filePath = applcation.getRealPath("/WEB-INF/files");
File file = new File(filePath);
if (!file.exists()) {
file.mkdirs();
}
1.2把文件放过去
photo.renameTo(new File(file,photoFileName));
2.主要过程:
2.1在strut.xml文件中,增加对文件上传的action的拦截
<action name="upload" class="com.itheima.web.action.UploadAction" method="upload">
<result name="success">/success.jsp</result>
</action>
2.2在index.jsp文件中添加文件上传的表单数据
<s:form action="upload.action" enctype="multipart/form-data">
<s:textfield name="username" label="用户名"/>
<s:file name="photo" label="照片"/>
<s:submit value="上传"/>
</s:form>
2.3添加action对应的方法和类
public String upload() {
ServletContext applcation = ServletActionContext.getServletContext();
String filePath = applcation.getRealPath("/WEB-INF/files");
File file = new File(filePath);
if (!file.exists()) {
file.mkdirs();
}
photo.renameTo(new File(file,photoFileName));
return SUCCESS;
}
2.4默认的上传文件的大小是2M,在struts2里的struts-default.xml文件有常量struts.multipart.maxSize的赋值。
我们可以通过在strut.xml中对这个常量重写,这样就会覆盖默认的值。
<constant name="struts.multipart.maxSize" value="88888899"/> 来修改上传文件的大小限制。