Struts2多檔案的上傳
阿新 • • 發佈:2018-12-26
Struts2Test.java原始碼:
package com.test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial") public class Struts2Test extends ActionSupport{ private String[] picFileName; private File[] pic; public String[] getPicFileName() { return picFileName; } public void setPicFileName(String[] picFileName) { this.picFileName = picFileName; } public File[] getPic() { return pic; } public void setPic(File[] pic) { this.pic = pic; } public String upload() throws IOException { for(int i=0;i<pic.length;i++){ File upPic=new File(ServletActionContext.getServletContext().getRealPath("upload"),picFileName[i]); upPic.getParentFile().mkdirs(); FileInputStream in=null; FileOutputStream out=null; in=new FileInputStream(pic[i]); out=new FileOutputStream(upPic); byte[] byt=new byte[1024]; int len=0; while((len=in.read(byt))!=-1){ out.write(byt, 0, len); } } return SUCCESS; } }
struts.xml原始碼:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="default" extends="struts-default" namespace="/"> <action name="hello" class="com.test.Struts2Test" > <result name="success">/success.jsp</result> </action> </package> </struts>
web.xml原始碼:
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <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>/*</url-pattern> </filter-mapping> </web-app>
index.jsp原始碼:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<s:form action="hello!upload" enctype="multipart/form-data" method="post">
<!-- enctype="multipart/form-data" 此處是一個很容易忽略的盲點 -->
<s:file name="pic" label="上傳" />
<s:file name="pic" label="上傳"/>
<s:file name="pic" label="上傳"/>
<s:submit value="提交"/>
</s:form>
</body>
</html>
success.jsp原始碼:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<base href="<%=basePath%>">
<title>SUCCESS</title>
</head>
<body>
SUCCESS! <br>
</body>
</html>