<?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" id="WebApp_ID" version="3.0"> <display-name>uploadTest</display-name> <!-- struts2配置 --> <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> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
<?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" namespace="/" extends="struts-default"> <!-- 上传 --> <action name="uploadAction" class="upload.UploadAction"> <result>index.jsp</result> <result name="input">index.jsp</result> <interceptor-ref name="fileUpload"> <!-- 不写下面两个参数为允许所有大小所有类型的文件的上传 --> <param name="maximumSize">1024000</param> <param name="allowedTypes"> application/msword,image/jpeg </param> </interceptor-ref> <interceptor-ref name="defaultStack" /> </action> <!-- 下载 --> <action name="downloadAction" class="upload.DownloadAction"> <result type="stream"> <!-- 文件类型 —— application/octet-stream 表示无限制 --> <param name="contentType">application/octet-stream</param> <!-- 流对象名 —— 去找Action中的getInputStream方法 --> <param name="inputName">inputStream</param> <!-- 文件名 —— 将调用该Action中的getFileName方法 --> <param name="contentDisposition">attachment;filename="${fileName}"</param> <param name="bufferSize">4096</param> </result> </action> </package> </struts>
package upload; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import com.opensymphony.xwork2.ActionSupport; public class UploadAction extends ActionSupport { private static final long serialVersionUID = 1L; private File myFile;//上传的文件,对应表单的file的name属性 private String myFileContentType;//文件类型,xxxContentType,xxx对应表单file的name属性 private String myFileFileName; @Override public String execute() throws Exception { if (myFile == null) { this.addFieldError("file", "文件不能为空,请选择"); return INPUT; } else { InputStream is = new FileInputStream(this.getMyFile()); OutputStream os = new FileOutputStream(new File("F:/", this.getMyFileFileName())); byte[] buf = new byte[1024]; int length = 0; while ((length = is.read(buf)) > 0) { os.write(buf, 0, length); } is.close(); os.close(); } return SUCCESS; } public File getMyFile() { return myFile; } public void setMyFile(File myFile) { this.myFile = myFile; } public String getMyFileContentType() { return myFileContentType; } public void setMyFileContentType(String myFileContentType) { this.myFileContentType = myFileContentType; } public String getMyFileFileName() { return myFileFileName; } public void setMyFileFileName(String myFileFileName) { this.myFileFileName = myFileFileName; } }
package upload; import java.io.InputStream; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class DownloadAction extends ActionSupport { private static final long serialVersionUID = 1L; private String fileName;//要下载的文件名 private InputStream inputStream; @Override public String execute() throws Exception { inputStream = ServletActionContext.getServletContext().getResourceAsStream("/" + fileName); return SUCCESS; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public InputStream getInputStream() { return inputStream; } public void setInputStream(InputStream inputStream) { this.inputStream = inputStream; } }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <!-- 上传 --> <s:form action="uploadAction" enctype="multipart/form-data" method="post"> <s:file name="myFile"></s:file> <s:submit /> </s:form> <!-- 下载 --> <a href="downloadAction?fileName=index.jsp">下载index.jsp文件</a> </body> </html>
就这样就可以实现基本的上传下载功能了,要实现复杂一点的再往上面加东西。
参考博客:http://www.blogjava.net/thisliy/archive/2009/08/14/291153.html