一、学习案例:通过在uploadfile.jsp页面填写完表单,提交后跳转到success.jsp页面,然后验证upload包下上传文件是否成功。
二、案例分析:struts2文件上传并不是表面上看的只需简单配置就可以上传文件。实际是分为两步的。1、struts2首先将客户端上传的文件保存到struts.multipart.saveDir键所指定的目录,如果该键所对应的目录不存在,就会保存到javax.servlet.context.tempdir环境变量所指定的目录中。2、Action中所定义的File类型的成员变量file实际上指向的是临时目录中的临时文件,然后服务器端通过IO的方式将临时文件写入到指定的服务器端目录中。
a)先在上传页面(uploadfile.jsp定义表单)
1、form标签中method方法为post,添加enctype=”multipart/form-data”
2、类型为file的input标签定义的name在action中会用到,我们定义为“file”
b)创建action(UploadFileAction.java)
1、上传文件我们首先需要三个成员变量:
private File file;
private String fileFileName;
private String fileContentType;
2、文件名称获取规定:文件名+FileName
3、文件类型获取规定:文件名+ContentType
4、通过IO操作文件上传。
c)配置struts.xml
d)创建成功页面(success.jsp)显示文件名称和类型。
e)struts2文件上传原理分析
1、项目上传完成后,我们通过查看控制台输出可以发现:
信息: Unable to find ‘struts.multipart.saveDir‘ property setting. Defaulting to javax.servlet.context.tempdir
从上一章《Struts2之default.properties详解》中了解,配置struts.multipart.saveDir即可。
2、我们可以通过在程序中输出临时文件路径查看临时文件
3、文件上传成功后即删除,所以我们可以在程序中让线程睡眠查看临时文件。
f)大家如果想了解多文件上传,可以自行百度,很简单,在此不多解释。
三、经验之谈:
a)通过之前的《Struts2之Servlet文件上传详解》博文,我们再学习struts2的文件上传是不是就和容易理解。分析下来,其实struts2只不过是把底层进行封装,让我们使用起来更方便。
b)在上面的f中之所以不解释,是因为我们在项目中使用多文件上传,一般不自己实现,关于多文件上传我们一般都使用插件。在我的网站“爱尚合伙人”中,相册中图片上传就是使用的插件。
c)关于多文件上传插件,大家如果喜欢可以自行百度,实在搞不了,可以和我交流,帮大家实现。
四、参考项目:http://download.csdn.net/detail/u011638419/8218863
五、每日一乐:
话说我侄子遭遇车祸飞出去七米毫发无伤。
就是因为背后有大书包垫着。
他说这是他第一次感到读书有用。
知识改变命运啊!
最终解释权归爱尚合伙人(www.23hhr.com)所有,转载请注明出处。
原文地址:http://blog.csdn.net/u011638419/article/details/41692091