之前写过一篇上传文件的文章,用是FileUpload组件,http://blog.csdn.net/kdc18333608478/article/details/52664720今天就介绍一下Struts2中的文件上传吧,其实它底层采用的就是FileUpload,只是进行了简单的封装,用起来更加方便了。下面就详细介绍一下。
首先,在Action中定义上传文件和上传文件名,生成get和set,那么当表单提交到action的时候,就会把上传文件封装进来,这里封装的具体操作是通过默认的拦截器实现的,以下是摘取的一部分代码,
//文件上传
private File upload; //上传文件
private String uploadFileName;//文件名
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
//提交
public String addsubmit() throws IOException{
//判断是否需要文件上传
if (upload!=null) {
//在上传到服务器文件夹里创建文件
File fileName=new File("E:\\uploadtest"+"/"+uploadFileName);
//把上传本地文件复制到服务器的文件中
FileUtils.copyFile(upload, fileName);
}
linkManService.addsubmit(linkMan);
return "addsubmit";
}
在这里需要注意的是,定义的上传文件的名称必须和表单里的input中的file的name属性相同,也就是此处的设置
还有就是文件名是上传文件名称+FileName,也就是代码中的uploadFileName.最后是上传过程,在此处先判断上传文件不为空的情况选择上传。最后测试一下,上传之前是这样
上传之后
文件成功上传到指定路径下!此时我们的功能已经实现了。但是Struts2的文件上传是有大小限制的,如果什么都不配,用默认的方法,只能上传小于2M的文件,解决这个可以去找到源码可以看出,,如图
框架给这个常量默认设置了上传文件大小2M,超过2M的文件你上传就会报错,有兴趣自己可以试试,这个我们是可以改的,如下图,我把它后边加俩零,此时限制就成200M的了。