框架学习之Struts2 第四节 文件上传

1. 上传单个文件的步骤

第一步:引入jar包,后者jar包是很重要的,利用它的FileUtils处理上传的文件

第二步:把form表单中的 enctype 设置为:multipart/form-data

表单中包含一个<input   type=”file” >

第三步:在Action类中添加一些属性

注意:后台的File对象的名称要和前台的input的name相同,这样struts2就可以利用反射技术调用set方法给File赋值了

也就是说,Action类中的File就变成了前台上传的文件了

16_1

测试:

在原项目中新增一个页面 file.jsp

主要内容:
<body>
<s:form enctype="multipart/form-data" method="post" action="file" namespace="/yinger" >
File to upload:
<br>
<input type="file" name="file" /><br>
<input type="submit" name="submit" value="提交" /><br>
</s:form>
</body>  
添加一个action

<action name="file" class="com.yinger.HelloWorld"
method
="file">
<result name="file">/message.jsp</result>
</action>  
Action类的方法:

private File file;
private String fileFileName;
private String fileContentType;

public String file() throws Exception{
String realpath
= ServletActionContext.getServletContext().getRealPath("/images");//得到上下文路径
File newFile = new File(realpath);//新建一个File,如果不存在这个目录就创建出这个目录
if(!newFile.exists()){
newFile.mkdirs();
}
FileUtils.copyFile(file,
new File(newFile, fileFileName));//然后复制文件
message="文件上传成功!<br>";
message
+="文件名称:"+fileFileName;
message
+="<br>文件类型:"+fileContentType;
return "file";
}

public File getFile() {
return file;
}


public void setFile(File file) {
this.file = file;
}


public String getFileFileName() {
return fileFileName;
}


public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}


public String getFileContentType() {
return fileContentType;
}


public void setFileContentType(String fileContentType) {
this.fileContentType = fileContentType;
}

  

测试结果:

输入:http://localhost:8080/struts2test/file.jsp

结果:

查看文件:

已经上传到了指定的文件夹了!

还有一个问题就是,注意上传的文件大小的限制,这个是可以设置的

<constant name= "struts.multipart.maxSize" value="XXXX" />

value就是设置文件的大小,注意它是所有文件大小的总和,默认是 2M

2.上传多个文件的步骤

它的步骤和单个文件上传其实差不多,只不过file变成了文件的数组而已,保存时循环一下就好了

注意,jsp中定义的type为file的input的name要相同

17

多文件上传方法类似,再次略过了。。。

原文地址:https://www.cnblogs.com/yinger/p/2117051.html