首页 > 代码库 > Struts2之struts2文件上传详解

Struts2之struts2文件上传详解

一、学习案例:通过在uploadfile.jsp页面填写完表单,提交后跳转到success.jsp页面,然后验证upload包下上传文件是否成功。

 

二、案例分析:struts2文件上传并不是表面上看的只需简单配置就可以上传文件。实际是分为两步的。1struts2首先将客户端上传的文件保存到struts.multipart.saveDir键所指定的目录,如果该键所对应的目录不存在,就会保存到javax.servlet.context.tempdir环境变量所指定的目录中。2Action中所定义的File类型的成员变量file实际上指向的是临时目录中的临时文件,然后服务器端通过IO的方式将临时文件写入到指定的服务器端目录中。

 

a)先在上传页面(uploadfile.jsp定义表单)

1、form标签中method方法为post,添加enctype=”multipart/form-data”

2、类型为fileinput标签定义的nameaction中会用到,我们定义为“file

 

b)创建actionUploadFileAction.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

从上一章《Struts2default.properties详解》中了解,配置struts.multipart.saveDir即可。

2、我们可以通过在程序中输出临时文件路径查看临时文件

3、文件上传成功后即删除,所以我们可以在程序中让线程睡眠查看临时文件。

 

f)大家如果想了解多文件上传,可以自行百度,很简单,在此不多解释。

 

三、经验之谈:

a)通过之前的《Struts2Servlet文件上传详解》博文,我们再学习struts2的文件上传是不是就和容易理解。分析下来,其实struts2只不过是把底层进行封装,让我们使用起来更方便。

b)在上面的f中之所以不解释,是因为我们在项目中使用多文件上传,一般不自己实现,关于多文件上传我们一般都使用插件。在我的网站“爱尚合伙人”中,相册中图片上传就是使用的插件。

c)关于多文件上传插件,大家如果喜欢可以自行百度,实在搞不了,可以和我交流,帮大家实现。

 

四、参考项目:http://download.csdn.net/detail/u011638419/8218863

 

五、每日一乐:

话说我侄子遭遇车祸飞出去七米毫发无伤。

就是因为背后有大书包垫着。

他说这是他第一次感到读书有用。

知识改变命运啊!

 

最终解释权归爱尚合伙人(www.23hhr.com)所有,转载请注明出处。

Struts2之struts2文件上传详解