Struts2实现多文件上传功能
程序员文章站
2024-02-21 23:25:16
前台form 表单:设置method=post,enctype=multipart/form-data。
struts2在原有的上传解析器继承上做了进一步封装,更进一步简...
前台form 表单:设置method=post,enctype=multipart/form-data。
struts2在原有的上传解析器继承上做了进一步封装,更进一步简化了文件上传。
action需要使用3个属性来封装该文件域的信息:
(1)类型为file的*属性封装了该文件域对应的文件内容;
(2)类型为string的***filename属性封装了该文件域对应的文件的文件类型;
(3)类型为string的***contenttype属性封装了该文件域对应的文件的类型。
具体实现:
新建web项目
添加struts2相关包
myeclipse可直接下载,右击项目,如下。
前台
<%@ page language="java" import="java.util.*" pageencoding="utf-8"%> <% string path = request.getcontextpath(); string basepath = request.getscheme()+"://"+request.getservername()+":"+request.getserverport()+path+"/"; %> <html> <body> <form action="upload.action" method="post" enctype="multipart/form-data"> <input type="file" name="upload" multiple="multiple"/> <input type="submit" value="提交"/> </form> </body> </html>
配置web.xml
<?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>uploadfile</display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> </web-app>
配置struts.xml
<?xml version="1.0" encoding="utf-8" ?> <!doctype struts public "-//apache software foundation//dtd struts configuration 2.1//en" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.enable.dynamicmethodinvocation" value="false"/> <constant name="struts.devmode" value="true"/> <constant name="struts.multipart.savedir" value="/tmp"/> <constant name="struts.custom.i18n.resources" value="app"></constant> <package name="default" namespace="/" extends="struts-default"> <action name="upload" class="com.yf.action.uploadaction"> <result>/index.jsp</result> <interceptor-ref name="defaultstack"></interceptor-ref> </action> </package> </struts>
后台代码
public class uploadaction extends actionsupport{ private list<file> upload; private list<string> uploadcontenttype; private list<string> uploadfilename; public list<file> getupload() { return upload; } public void setupload(list<file> upload) { this.upload = upload; } public list<string> getuploadcontenttype() { return uploadcontenttype; } public void setuploadcontenttype(list<string> uploadcontenttype) { this.uploadcontenttype = uploadcontenttype; } public list<string> getuploadfilename() { return uploadfilename; } public void setuploadfilename(list<string> uploadfilename) { this.uploadfilename = uploadfilename; } @override public string execute() throws exception { //文件保存路径 string path = servletactioncontext.getservletcontext().getrealpath("/images"); file file = new file(path); //不存在则创建 if(!file.exists()){ file.mkdir(); } //循环将文件上传到指定路径 for(int i = 0; i< upload.size(); i++){ fileutils.copyfile(upload.get(i), new file(file,uploadfilename.get(i))); } return success; }
结果如下
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 接口方法没有找到实现