(八)Struts2 文件上传和下载
2016-05-09 08:47
656 查看
所有的学习我们必须先搭建好Struts2的环境(1、导入对应的jar包,2、web.xml,3、struts.xml)
第一节:Struts2 文件上传
Struts2 文件上传基于Struts2 拦截器实现;Struts2 文件上传使用的是fileupload 组件;
Form 配置enctype="multipart/form-data";(这样就是以二进制来上传的)
Struts2 获取上传文件:name (name 是文件表单的name)
Struts2 获取上传文件名:name+FileName;
Struts2 获取上传文件的类型:name+ContentType;
例子:
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="manager" extends="struts-default"> <action name="upload" class="com.wishwzp.action.FileUploadAction"> <result name="success">/success.jsp</result> </action> </package> </struts>
FileUploadAction.java
package com.wishwzp.action; import java.io.File; import org.apache.commons.io.FileUtils; import com.opensymphony.xwork2.ActionSupport; public class FileUploadAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; // 文件(这里的文件名必须要和前端的文件:<input type="file" name="wishwzp"/><br/>name一样) private File wishwzp; // 文件名(name+FileName) private String wishwzpFileName; // 文件类型(name+ContentType) private String wishwzpContentType; public File getwishwzp() { return wishwzp; } public void setwishwzp(File wishwzp) { this.wishwzp = wishwzp; } public String getwishwzpFileName() { return wishwzpFileName; } public void setwishwzpFileName(String wishwzpFileName) { this.wishwzpFileName = wishwzpFileName; } public String getwishwzpContentType() { return wishwzpContentType; } public void setwishwzpContentType(String wishwzpContentType) { this.wishwzpContentType = wishwzpContentType; } @Override public String execute() throws Exception { System.out.println("文件名:"+wishwzpFileName); System.out.println("文件类型:"+wishwzpContentType); //上传到C盘中 String filePath="C:/"+wishwzpFileName; //保存文件添加到文件中 File saveFile=new File(filePath); //将wishwzp文件拷到saveFile中,这样数据就到C盘中了 FileUtils.copyFile(wishwzp, saveFile); return SUCCESS; } }
fileupload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <!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> <!-- 这里enctype="multipart/form-data就是将数据以二进制上传 --> <form action="upload" method="post" enctype="multipart/form-data"> 文件:<input type="file" name="wishwzp"/><br/> <input type="submit" value="提交"/> </form> </body> </html>
success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <!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> 文件上传成功! </body> </html>
第二节:配置文件的大小及类型
配置可以上传哪些文件的信息以及最大上传的大小<param name="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg</param>
<param name="maximumSize">81101</param>
例子:
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="manager" extends="struts-default"> <action name="upload" class="com.wishwzp.action.FileUploadAction"> <result name="success">/success.jsp</result> <result name="input">/fileupload.jsp</result> <interceptor-ref name="fileUpload"> <param name="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg</param> <param name="maximumSize">81101</param> </interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </action> </package> </struts>
前端页面文件错误表达式:
<s:fielderror></s:fielderror>
例子:
fileupload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <!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:fielderror></s:fielderror> <!-- 这里enctype="multipart/form-data就是将数据以二进制上传 --> <form action="upload" method="post" enctype="multipart/form-data"> 文件:<input type="file" name="wishwzp"/><br/> <input type="submit" value="提交"/> </form> </body> </html>
第三节:大文件上传
Struts2 文件上传大小默认是2M;<constant name="struts.multipart.maxSize" value="20000000"></constant>
例子:
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 上传大小配置 --> <constant name="struts.multipart.maxSize" value="20000000"></constant> <package name="manager" extends="struts-default"> <action name="upload" class="com.wishwzp.action.FileUploadAction"> <result name="success">/success.jsp</result> <result name="input">/fileupload.jsp</result> </action> </package> </struts>
第四节:多文件上传
strutsl.xml<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="manager" extends="struts-default"> <action name="uploads" class="com.wishwzp.action.FilesUploadAction"> <result name="success">/success.jsp</result> <result name="input">/filesupload.jsp</result> </action> </package> </struts>
FilesUploadAction.java
package com.wishwzp.action; import java.io.File; import org.apache.commons.io.FileUtils; import com.opensymphony.xwork2.ActionSupport; public class FilesUploadAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; // 文件(这里的文件名必须要和前端的文件:<input type="file" name="wishwzp"/><br/>name一样) private File[] wishwzp; // 文件名(name+FileName) private String[] wishwzpFileName; // 文件类型(name+ContentType) private String[] wishwzpContentType; public File[] getwishwzp() { return wishwzp; } public void setwishwzp(File[] wishwzp) { this.wishwzp = wishwzp; } public String[] getwishwzpFileName() { return wishwzpFileName; } public void setwishwzpFileName(String[] wishwzpFileName) { this.wishwzpFileName = wishwzpFileName; } public String[] getwishwzpContentType() { return wishwzpContentType; } public void setwishwzpContentType(String[] wishwzpContentType) { this.wishwzpContentType = wishwzpContentType; } @Override public String execute() throws Exception { for(int i=0;i<wishwzp.length;i++){ System.out.println("文件名:"+wishwzpFileName[i]); System.out.println("文件类型:"+wishwzpContentType[i]); //上传到C盘中 String filePath="C:/"+wishwzpFileName[i]; //保存文件添加到文件中 File saveFile=new File(filePath); //将wishwzp文件拷到saveFile中,这样数据就到C盘中了 FileUtils.copyFile(wishwzp[i], saveFile); } return SUCCESS; } }
filesupload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <!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:fielderror></s:fielderror> <form action="uploads" method="post" enctype="multipart/form-data"> 文件1:<input type="file" name="wishwzp"/><br/> 文件2:<input type="file" name="wishwzp"/><br/> 文件3:<input type="file" name="wishwzp"/><br/> <input type="submit" value="提交"/> </form> </body> </html>
第五节:Struts2 文件下载
返回的是文件流<param name="contentDisposition">attachment;filename=${fileName}</param>
InputStream getInputStream()
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.multipart.maxSize" value="20000000"></constant> <package name="manager" extends="struts-default"> <action name="download" class="com.wishwzp.action.FileDownloadAction"> <result type="stream"> <param name="contentDisposition">attachment;filename=${fileName}</param> </result> </action> </package> </struts>
FileDownloadAction.java
package com.wishwzp.action; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import com.opensymphony.xwork2.ActionSupport; public class FileDownloadAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; private String fileName; public String getFileName() throws Exception{ fileName=new String(fileName.getBytes(),"ISO8859-1"); return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public InputStream getInputStream()throws Exception{ File file=new File("C:/美女1.jpg"); this.fileName="美女1号"; return new FileInputStream(file); } }
filedownload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <!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> <a href="download">文件下载</a> </body> </html>
相关文章推荐
- J2SE基础之JDK环境变量配置
- Spring源码解析——start from BeanFactory(一)
- 《java入门第一季》之eclipse快捷键
- 《java入门第一季》之eclipse快捷键
- Java的多线程创建方法
- Java数据类型的分类
- Java设计模式(八) 适配器模式
- Java ArrayList源码剖析
- java的类加载顺序
- JAVA笔记之IO流
- 反射和注解的使用
- Eclipse中,如何把一个java项目变成web项目?
- (七)Struts2 验证框架
- 使用Android Studio打开eclipse项目以及打开网上下载的studio项目报错解决办法
- java中的一些基本语句
- (六)Struts2 国际化
- 012 Integer to Roman(Java)
- 【转】Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- spring 、zookeeper(dubbo)整合
- JAVA代码训练营救——TreeSet的泛型实现