当在Struts2中需要同时上传多个文件时,需要进行以下几个步骤:
1.在JSP中设置表单属性 enctype=multipart/form-data,以便能够上传文件。
<form action="upload.action" method="post" enctype="multipart/form-data">
<input type="file" name="file1" /><br>
<input type="file" name="file2" /><br>
<input type="submit" value="上传" />
</form>
2.在struts.xml文件中添加一个上传文件的action映射,该映射需要设置multipart interceptor拦截器,以便能够接收上传的文件。
<action name="upload" class="com.example.UploadAction">
<interceptor-ref name="basicStack" />
<interceptor-ref name="fileUpload">
<param name="maximumSize">10485760</param>
<param name="allowedTypes">image/png,image/gif,image/jpeg</param>
</interceptor-ref>
<result name="success">success.jsp</result>
</action>
其中maximumSize参数表示上传文件的最大大小,allowedTypes参数表示上传文件的类型限制。
3.在UploadAction中添加一个List
public class UploadAction {
private List<File> files;
// 省略其它代码
public void setFiles(List<File> files) {
this.files = files;
}
public List<File> getFiles() {
return files;
}
}
4.如果要对上传的多个文件进行逐个处理,需要在struts.xml文件中添加多个file元素,用于分别为每个上传文件设置一个File类型的属性。
<action name="upload" class="com.example.UploadAction">
<interceptor-ref name="basicStack" />
<interceptor-ref name="fileUpload">
<param name="maximumSize">10485760</param>
<param name="allowedTypes">image/png,image/gif,image/jpeg</param>
</interceptor-ref>
<result name="success">success.jsp</result>
<allowedMethods>execute</allowedMethods>
<param name="files">file1,file2</param>
<param name="file1">${files[0]}</param>
<param name="file2">${files[1]}</param>
</action>
示例一:在UploadAction中逐个处理上传的文件
public class UploadAction extends ActionSupport {
private List<File> files;
public void setFiles(List<File> files) {
this.files = files;
}
public List<File> getFiles() {
return files;
}
@Override
public String execute() throws Exception {
if (files != null) {
for (File file : files) {
// 处理上传的文件
}
return SUCCESS;
} else {
return ERROR;
}
}
}
示例二:在UploadAction中一次性处理上传的多个文件
public class UploadAction extends ActionSupport {
private List<File> files;
public void setFiles(List<File> files) {
this.files = files;
}
public List<File> getFiles() {
return files;
}
@Override
public String execute() throws Exception {
if (files != null) {
// 依次处理上传的每个文件
for (File file : files) {
// 处理上传的文件
}
// 一次性处理所有上传的文件
// 实现代码省略
return SUCCESS;
} else {
return ERROR;
}
}
}
以上就是实现Struts2中上传多个文件的方法攻略,可以根据上传多个文件的需求进行相应的调整和扩展。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:struts2中实现多个文件同时上传代码 - Python技术站