一.上传文件过程(以上传头像为例)
1.头像文件通过jsp的表单提交到add.action进行处理
注意 1)表单的enctype属性设置为multipart/form-data
2)上传方式为post方法
<form id="form" name="form" action="${basePath}nsfw/user_add.action" method="post" enctype="multipart/form-data">
<input type="file" name="headImg"/>
2.add.action接收到上传来的file对象,用JSP中input表单的name属性值headImg封装文件内容,headImgContentType封装文件类型
headImgFileName封装文件名称,由于是Struts2自动帮我们封装。所以如果jsp中input表单的name属性值为X,那么对应其他两个就必须
为XContentType和XFileName.
private File headImg;
private String headImgContentType;
private String headImgFileName;
3.由于提交过来的file会在add()方法执行完后,自动被删除掉。我们要把它复制到一个指定的我们指定的文件WebRoot的upload/user下。
1)获取指定文件路径
String filePath=ServletActionContext.getServletContext.getRealPath();
2)用UUID+headImgFileName防止文件因重复而被覆盖
String fileName=UUID.randomUUID().toString() + headImgFileName+headImgContentType;
3)用FileUtil把临时文件复制到指定文件下(new File(目录,目录/文件))
FileUtil.copyFile(headImg,new File(filePath,fileName));
4.将文件名称封装到User中,并保存进数据库.
1)user.setHeadImg("user/" + fileName);
2) service.save(user);
5.查出现在数据库中所有数据,用jsp呈现在列表页面上
以上是我自学过程中,做SSH项目练习时,对Struts2上传文件的总结,如有纰漏,望各位前辈指出,敝人将不胜感激。