Struts 上传和下载功能
Struts上面自带了上传和下载功能,使用非常方便
下面做一个简单的上传下载例子:
单文件上传:
首先配置Struts中核心控制器filter
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"><display-name>StrutsUpload</display-name><filter><filter-name>Struts</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>Struts</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>
action:
package action;import java.io.File;import java.io.IOException;import org.apache.commons.io.FileUtils;import com.opensymphony.xwork2.ActionSupport;/*** @Author:Z.J.* @Date:2016年3月14日 下午8:38:06* 说明*/public class FileUpLoadAction extends ActionSupport {private static final long serialVersionUID = 1L;private File file;//文件,与页面中input的name一定要保持一致private String fileFileName;private String fileContentType;private String fileDescript;public String upload(){System.out.println("上传功能");System.out.println(file);System.out.println(fileFileName);System.out.println(fileContentType);System.out.println(fileDescript);//保存文件try {FileUtils.copyFile(file, new File("/Users/zjing/ZWorkspace/zjImage/"+fileFileName));} catch (IOException e) {e.printStackTrace();}return SUCCESS;}public File getFile() {return file;}public void setFile(File file) {this.file = file;}public String getFileFileName() {return fileFileName;}public void setFileFileName(String fileFileName) {this.fileFileName = fileFileName;}public String getFileContentType() {return fileContentType;}public void setFileContentType(String fileContentType) {this.fileContentType = fileContentType;}public String getFileDescript() {return fileDescript;}public void setFileDescript(String fileDescript) {this.fileDescript = fileDescript;}}
jsp页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>上传</title></head><body><form action="upload" method="post" enctype="multipart/form-data">文件:<input type="file" name="file"/><br/>描述:<input type="text" name="fileDescript"/><br/><input type="submit" value="上传"/></form></body></html>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>上传成功</title></head><body><h3>上传成功!</h3></body></html>
index.jsp
struts.xml 配置
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "struts-2.3.dtd" ><struts><!-- 修改临时文件目录 --><constant name="struts.multipart.saveDir" value="/Users/zjing/ZWorkspace/zjTemp"></constant>
<package name="file" namespace="/" extends="struts-default" ><!-- 单文件上传 --><action name="upload" class="action.FileUpLoadAction" method="upload"><result>/index.jsp</result></action>
</package></struts>
多文件上传:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>多文件上传</title></head><body><form action="upload2" method="post" enctype="multipart/form-data">文件1:<input type="file" name="file"/><br/>文件2:<input type="file" name="file"/><br/>文件3:<input type="file" name="file"/><br/>描述:<input type="text" name="descript"/><br/><input type="submit" value="上传"/></form></body></html>
action
package action;import java.io.File;import java.io.IOException;import org.apache.commons.io.FileUtils;import com.opensymphony.xwork2.ActionSupport;/*** @Author:Z.J.* @Date:2016年3月14日 下午9:13:44* 多文件上传*/public class MultiUploadAction extends ActionSupport{private static final long serialVersionUID = 1L;private File[] file;private String[] fileFileName;private String[] fileContentType;private String descript;//多文件上传public String multiUpload() throws IOException{if (file!=null) {for (int i = 0; i < file.length; i++) {System.out.println(file[i]);System.out.println(fileFileName[i]);System.out.println(fileContentType[i]);//保存文件FileUtils.copyFile(file[i], new File("/Users/zjing/ZWorkspace/zjImage/"+fileFileName[i]));}System.out.println(descript);}return SUCCESS;}public File[] getFile() {return file;}public void setFile(File[] file) {this.file = file;}public String[] getFileFileName() {return fileFileName;}public void setFileFileName(String[] fileFileName) {this.fileFileName = fileFileName;}public String[] getFileContentType() {return fileContentType;}public void setFileContentType(String[] fileContentType) {this.fileContentType = fileContentType;}public String getDescript() {return descript;}public void setDescript(String descript) {this.descript = descript;}}
配置action:
<!-- 多文件上传 --><action name="upload2" class="action.MultiUploadAction" method="multiUpload"><result>/index.jsp</result></action>
Struts下载
action
package action;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.InputStream;import com.opensymphony.xwork2.ActionSupport;/*** @Author:Z.J.* @Date:2016年3月15日 下午8:50:20* 下载的action*/public class DownLoadAction extends ActionSupport{private static final long serialVersionUID = 1L;//用于保存文件名private String fileName;//下载的方法public String down() throws Exception{System.out.println("下载文件");return "down";//发出二进制数据流}//给SteamResult的inputName 属性提供一个getter方法,用于返回输入流public InputStream getFileStream(){try {File file = new File("/Users/zjing/ZJ壁纸/hualu.jpg");fileName = file.getName();FileInputStream fis = new FileInputStream(file);return fis;} catch (FileNotFoundException e) {e.printStackTrace();throw new RuntimeException(e);}}//提供一个getter方法用于给struts.xml 文件获取文件名public String getFileName() {return fileName;}}
在struts.xml中配置action
<!-- 文件下载 --><action name="down" class="action.DownLoadAction" method="down"><result name="down" type="stream"><!-- 下载的文件类型:通用的可以使用二进制类型 --><param name="contentType">application/octet-stream</param><!-- 下载的提示框 --><param name="contentDisposition">attachment;filename=${fileName}</param><!-- 需要下载的文件输入流 --><param name="inputName">fileStream</param><!-- 缓存区大小 --><param name="bufferSize">512</param></result></action>

浙公网安备 33010602011771号