Struts2上传下载
分类:
版权声明:本文为博主原创文章,转载请注明原地址。
项目目录:
web.xml:主要是配好struts2
- <?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>
struts.xml:配好上传下载的两个action。
- <?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>
UploadAction.java
- 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;
- }
- }
DownloadAction.java
- 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;
- }
- }
index.jsp:访问:
- <%@ 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