Struts2(13):Struts2的上传下载续2
本节主要介绍上传任意数据的文件、指定文件类型上传与Struts2的下载1,首先改造upload.jsp,写了个JS事件,可以添加删除上传框。可以上传任意多(大于等于1)个文件!<%@ page language="java" import="java.util.*" pageEncoding="gbk"%><%@ taglibprefix="s" uri="/struts-tags"%><html><script type="text/javascript">function addMore(){var td = document.getElementById("more");var br = document.createElement("br");var input = document.createElement("input");var button = document.createElement("input");input.type="file";input.name="file";button.type="button";button.value="Remove";button.onclick = function(){td.removeChild(br);td.removeChild(input);td.removeChild(button);}td.appendChild(br);td.appendChild(input);td.appendChild(button);}</script><body><table><tr><td><s:fielderror cssStyle="color:red"/></td></tr></table> <s:form action="upload" theme="simple" enctype="multipart/form-data"><table align="center" width="40%"> <tr> <td>username:</td> <td><s:textfield name="username"></s:textfield></td> </tr> <tr> <td>password:</td> <td><s:password name="password"></s:password></td> </tr> <tr> <td>file:</td> <td id="more"><!-- 定义一个id,方便javascript调用 --> <s:file name="file"></s:file> <input type="button" value="Add More..." > </td> </tr> <tr> <td><s:submit></s:submit></td> <td><s:reset></s:reset></td> </tr> </table></s:form></body></html> 2,UploadAction.java
package com.test.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.List;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport {private String username;private String password;private List<File> file;//下面两个变量是文件名与文件类型,Struts2会自动为以下两变量赋值private List<String> fileFileName;private List<String> fileContentType;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public List<File> getFile() {return file;}public void setFile(List<File> file) {this.file = file;}public List<String> getFileFileName() {return fileFileName;}public void setFileFileName(List<String> fileFileName) {this.fileFileName = fileFileName;}public List<String> getFileContentType() {return fileContentType;}public void setFileContentType(List<String> fileContentType) {this.fileContentType = fileContentType;}public String execute() throws Exception {for(int i = 0;i < file.size(); i++){InputStream is = new FileInputStream(file.get(i));String root = ServletActionContext.getRequest().getRealPath("upload");File destFile = new File(root,this.getFileFileName().get(i));OutputStream os = new FileOutputStream(destFile);byte[] buffer = new byte;int length = 0;while((length= is.read(buffer)) > 0){os.write(buffer, 0, length);}is.close();os.close();}return SUCCESS;}} 3,struts.xml
<action name="upload" class="com.test.action.UploadAction"><result name="success">/uploadResult.jsp</result><result name="input">/upload.jsp</result><interceptor-ref name="fileUpload"><!--指定上传文件大小,下面是400K--><param name="maximumSize">409600</param><!--指定上传文件类型,这里只允许上传PPT文件,文件类型名可以在Tomcat的conf\web.xml中查找--><param name="allowedTypes">application/vnd.ms-powerpoint</param></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref></action>以上就完成了一个多文件,指定文件类型上传功能。
Struts2的下载实现
download.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%@ taglib prefix="s" uri="/struts-tags"%><html><body><s:a href="/struts2/download.action">downlaod</s:a></body></html>
DownloadAction.java
package com.test.action;import java.io.InputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class DownloadAction extends ActionSupport {public InputStream getDownloadFile(){return ServletActionContext.getServletContext().getResourceAsStream("upload/11.ppt");}public String execute() throws Exception {return SUCCESS;}}struts.xml
<action name="download" class="com.test.action.DownloadAction"><result name="success" type="stream"><!--下载文件的类型--><param name="contentType">application/vnd.ms-powerpoint</param><!--指定下载文件的默认文件名--><param name="contentDisposition">filename="Struts2.ppt"</param><!--对应的getDownloadFile类中的getDownloadFile方法--><param name="inputName">downloadFile</param></result></action>
页:
[1]