Struts2(多)文件上传和下载使用示例
2013-11-05 10:44
471 查看
[java] view
plaincopyprint?
/**
* Struts2Test
* 使用Struts2上传文件
*/
package com.labci.struts2.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
/**
* @author Bill Tu(tujiyue/iwtxokhtd)
* Jun 8, 2011[8:31:01 PM]
*
*/
public class UploadFileAction extends ActionSupport implements
ServletRequestAware {
/**
*
*/
private static final long serialVersionUID = -1896915260152387341L;
private HttpServletRequest request;
public void setServletRequest(HttpServletRequest req) {
this.request=req;
}
private List<File> fileName;//这里的"fileName"一定要与表单中的文件域名相同
private List<String> fileNameContentType;//格式同上"fileName"+ContentType
private List<String> fileNameFileName;//格式同上"fileName"+FileName
private String savePath;//文件上传后保存的路径
private String allowTypes;//允许上传的文件类型
public List<File> getFileName() {
return fileName;
}
public void setFileName(List<File> fileName) {
this.fileName = fileName;
}
public List<String> getFileNameContentType() {
return fileNameContentType;
}
public void setFileNameContentType(List<String> fileNameContentType) {
this.fileNameContentType = fileNameContentType;
}
public List<String> getFileNameFileName() {
return fileNameFileName;
}
public void setFileNameFileName(List<String> fileNameFileName) {
this.fileNameFileName = fileNameFileName;
}
@SuppressWarnings("deprecation")
public String getSavePath() {
return request.getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public String getAllowTypes() {
return allowTypes;
}
public void setAllowTypes(String allowTypes) {
this.allowTypes = allowTypes;
}
@Override
public String execute() throws Exception {
//得到文件的类型
List<String> fileTypes=getFileNameContentType();
String []allowTypes=getAllowTypes().split(",");
List<String> typesList=Arrays.asList(allowTypes);
boolean allowFlag=true;//是否存在不允许上传的文件类型
for(String type:fileTypes){
if(!typesList.contains(type)){
allowFlag=false;
break;
}
}
if(!allowFlag){
request.setAttribute("fileTypeError",
"您上传的文件中存在不允许上传的类型,允许上传的类型为:"+getAllowTypes());
return INPUT;
}
//允许上传
File dir=new File(getSavePath());
if(!dir.exists()){
dir.mkdirs();
}
List<File> files=getFileName();
for(int i=0;i<files.size();i++){
FileOutputStream fos=new FileOutputStream(getSavePath()+"//"+getFileNameFileName().get(i));
FileInputStream fis=new FileInputStream(getFileName().get(i));
byte []buffers=new byte[1024];
int len=0;
while((len=fis.read(buffers))!=-1){
fos.write(buffers,0,len);
}
}
List<String> fileHrefsList=new ArrayList<String>();
for(String fileName:getFileNameFileName()){
String href="<a href="/" mce_href="/""downloadFile.action?fileName="+fileName+"/">"+fileName+"</a>";
fileHrefsList.add(href);
}
request.setAttribute("fileNameList", fileHrefsList);
return SUCCESS;
}
}
[java] view
plaincopyprint?
<%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts2多文件上传</title>
</head>
<body>
<table>
<tr>
<td>
<c:choose>
<c:when test="${!empty fileTypeError}">
<font color="red"><b>${fileTypeError}</b></font>
</c:when>
<c:otherwise>
<c:forEach items="${fileNameList}" var="fileName">
${fileName}<br/>
</c:forEach>
</c:otherwise>
</c:choose>
</td>
</tr>
</table>
<!-- 不一定要选择所有文件才可以上传 -->
<form action="uploadFile.action" method="post" enctype="multipart/form-data">
<input type="file" name="fileName"/><br/>
<input type="file" name="fileName"/><br/>
<input type="file" name="fileName"/><br/>
<input type="submit" value="上传"/>
</form>
</body>
</html>
[xhtml] view
plaincopyprint?
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
[xhtml] view
plaincopyprint?
<?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.devMode" value="false" />
<!-- 改变struts2默认为2M的上传文件大小限制 -->
<constant name="struts.multipart.maxSize" value="10240000"/>
<package name="upload" extends="struts-default">
<action name="uploadFile" class="com.labci.struts2.action.UploadFileAction">
<param name="savePath">/upload</param>
<param name="allowTypes">text/plain,text/xml,text/html,image/gif,image/png,image/jpeg,image/jpg,image/bmp</param>
<result name="success">index.jsp</result>
<result name="input">index.jsp</result>
</action>
<action name="downloadFile" class="com.labci.struts2.action.DownloadFileAction">
<param name="savePath">/upload</param>
<result name="success">index.jsp</result>
</action>
</package>
</struts>
[java] view
plaincopyprint?
/**
* Struts2Test
* 文件下载的Action
*/
package com.labci.struts2.action;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.ActionSupport;
/**
* @author Bill Tu(tujiyue/iwtxokhtd)
* Jun 8, 2011[9:15:15 PM]
*
*/
public class DownloadFileAction extends ActionSupport implements
ServletRequestAware, ServletResponseAware {
/**
*
*/
private static final long serialVersionUID = -7448748577778248376L;
private HttpServletRequest request;
private HttpServletResponse response;
private String savePath;
@Override
public String execute() throws Exception {
String fileName=request.getParameter("fileName");
String fullPath=getSavePath()+"//"+fileName;
fileName=new String(fileName.getBytes("utf-8"),"iso-8859-1");
InputStream is=new FileInputStream(fullPath);
int len=0;
byte []buffers=new byte[1024];
response.reset();
response.setContentType("application/x-msdownload");
response.addHeader("Content-Disposition", "attachment;filename=/""+fileName+"/"");
//把文件内容通过输出流打印到页面上供下载
while((len=is.read(buffers))!=-1){
OutputStream os=response.getOutputStream();
os.write(buffers, 0, len);
}
is.close();
return SUCCESS;
}
public void setServletRequest(HttpServletRequest req) {
this.request=req;
}
public void setServletResponse(HttpServletResponse resp) {
this.response=resp;
}
@SuppressWarnings("deprecation")
public String getSavePath() {
return request.getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
}
![](http://hi.csdn.net/attachment/201106/8/0_1307540444V6jO.gif)
![](http://hi.csdn.net/attachment/201106/8/0_1307540458jL86.gif)
![](http://hi.csdn.net/attachment/201106/8/0_13075404761lLI.gif)
![](http://hi.csdn.net/attachment/201106/8/0_1307540494hRNc.gif)
![](http://hi.csdn.net/attachment/201106/8/0_1307540517CqeZ.gif)
plaincopyprint?
/**
* Struts2Test
* 使用Struts2上传文件
*/
package com.labci.struts2.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
/**
* @author Bill Tu(tujiyue/iwtxokhtd)
* Jun 8, 2011[8:31:01 PM]
*
*/
public class UploadFileAction extends ActionSupport implements
ServletRequestAware {
/**
*
*/
private static final long serialVersionUID = -1896915260152387341L;
private HttpServletRequest request;
public void setServletRequest(HttpServletRequest req) {
this.request=req;
}
private List<File> fileName;//这里的"fileName"一定要与表单中的文件域名相同
private List<String> fileNameContentType;//格式同上"fileName"+ContentType
private List<String> fileNameFileName;//格式同上"fileName"+FileName
private String savePath;//文件上传后保存的路径
private String allowTypes;//允许上传的文件类型
public List<File> getFileName() {
return fileName;
}
public void setFileName(List<File> fileName) {
this.fileName = fileName;
}
public List<String> getFileNameContentType() {
return fileNameContentType;
}
public void setFileNameContentType(List<String> fileNameContentType) {
this.fileNameContentType = fileNameContentType;
}
public List<String> getFileNameFileName() {
return fileNameFileName;
}
public void setFileNameFileName(List<String> fileNameFileName) {
this.fileNameFileName = fileNameFileName;
}
@SuppressWarnings("deprecation")
public String getSavePath() {
return request.getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public String getAllowTypes() {
return allowTypes;
}
public void setAllowTypes(String allowTypes) {
this.allowTypes = allowTypes;
}
@Override
public String execute() throws Exception {
//得到文件的类型
List<String> fileTypes=getFileNameContentType();
String []allowTypes=getAllowTypes().split(",");
List<String> typesList=Arrays.asList(allowTypes);
boolean allowFlag=true;//是否存在不允许上传的文件类型
for(String type:fileTypes){
if(!typesList.contains(type)){
allowFlag=false;
break;
}
}
if(!allowFlag){
request.setAttribute("fileTypeError",
"您上传的文件中存在不允许上传的类型,允许上传的类型为:"+getAllowTypes());
return INPUT;
}
//允许上传
File dir=new File(getSavePath());
if(!dir.exists()){
dir.mkdirs();
}
List<File> files=getFileName();
for(int i=0;i<files.size();i++){
FileOutputStream fos=new FileOutputStream(getSavePath()+"//"+getFileNameFileName().get(i));
FileInputStream fis=new FileInputStream(getFileName().get(i));
byte []buffers=new byte[1024];
int len=0;
while((len=fis.read(buffers))!=-1){
fos.write(buffers,0,len);
}
}
List<String> fileHrefsList=new ArrayList<String>();
for(String fileName:getFileNameFileName()){
String href="<a href="/" mce_href="/""downloadFile.action?fileName="+fileName+"/">"+fileName+"</a>";
fileHrefsList.add(href);
}
request.setAttribute("fileNameList", fileHrefsList);
return SUCCESS;
}
}
[java] view
plaincopyprint?
<%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts2多文件上传</title>
</head>
<body>
<table>
<tr>
<td>
<c:choose>
<c:when test="${!empty fileTypeError}">
<font color="red"><b>${fileTypeError}</b></font>
</c:when>
<c:otherwise>
<c:forEach items="${fileNameList}" var="fileName">
${fileName}<br/>
</c:forEach>
</c:otherwise>
</c:choose>
</td>
</tr>
</table>
<!-- 不一定要选择所有文件才可以上传 -->
<form action="uploadFile.action" method="post" enctype="multipart/form-data">
<input type="file" name="fileName"/><br/>
<input type="file" name="fileName"/><br/>
<input type="file" name="fileName"/><br/>
<input type="submit" value="上传"/>
</form>
</body>
</html>
[xhtml] view
plaincopyprint?
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
[xhtml] view
plaincopyprint?
<?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.devMode" value="false" />
<!-- 改变struts2默认为2M的上传文件大小限制 -->
<constant name="struts.multipart.maxSize" value="10240000"/>
<package name="upload" extends="struts-default">
<action name="uploadFile" class="com.labci.struts2.action.UploadFileAction">
<param name="savePath">/upload</param>
<param name="allowTypes">text/plain,text/xml,text/html,image/gif,image/png,image/jpeg,image/jpg,image/bmp</param>
<result name="success">index.jsp</result>
<result name="input">index.jsp</result>
</action>
<action name="downloadFile" class="com.labci.struts2.action.DownloadFileAction">
<param name="savePath">/upload</param>
<result name="success">index.jsp</result>
</action>
</package>
</struts>
[java] view
plaincopyprint?
/**
* Struts2Test
* 文件下载的Action
*/
package com.labci.struts2.action;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.ActionSupport;
/**
* @author Bill Tu(tujiyue/iwtxokhtd)
* Jun 8, 2011[9:15:15 PM]
*
*/
public class DownloadFileAction extends ActionSupport implements
ServletRequestAware, ServletResponseAware {
/**
*
*/
private static final long serialVersionUID = -7448748577778248376L;
private HttpServletRequest request;
private HttpServletResponse response;
private String savePath;
@Override
public String execute() throws Exception {
String fileName=request.getParameter("fileName");
String fullPath=getSavePath()+"//"+fileName;
fileName=new String(fileName.getBytes("utf-8"),"iso-8859-1");
InputStream is=new FileInputStream(fullPath);
int len=0;
byte []buffers=new byte[1024];
response.reset();
response.setContentType("application/x-msdownload");
response.addHeader("Content-Disposition", "attachment;filename=/""+fileName+"/"");
//把文件内容通过输出流打印到页面上供下载
while((len=is.read(buffers))!=-1){
OutputStream os=response.getOutputStream();
os.write(buffers, 0, len);
}
is.close();
return SUCCESS;
}
public void setServletRequest(HttpServletRequest req) {
this.request=req;
}
public void setServletResponse(HttpServletResponse resp) {
this.response=resp;
}
@SuppressWarnings("deprecation")
public String getSavePath() {
return request.getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
}
![](http://hi.csdn.net/attachment/201106/8/0_1307540444V6jO.gif)
![](http://hi.csdn.net/attachment/201106/8/0_1307540458jL86.gif)
![](http://hi.csdn.net/attachment/201106/8/0_13075404761lLI.gif)
![](http://hi.csdn.net/attachment/201106/8/0_1307540494hRNc.gif)
![](http://hi.csdn.net/attachment/201106/8/0_1307540517CqeZ.gif)
![](http://hi.csdn.net/attachment/201106/8/0_1307540529rIsB.gif)
相关文章推荐
- Struts2(多)文件上传和下载使用示例
- Struts2(多)文件上传和下载使用示例
- 使用Struts2实现文件的上传与动态下载(1)
- 使用Struts2实现文件的上传和下载
- 使用Struts2实现文件的上传与动态下载(2)
- Struts2(三)使用Struts2实现文件的上传和下载
- Struts2使用注解实现文件的上传与下载(一)
- 使用Uploadify插件在struts2中实现多文件上传示例
- ASP.NET上传下载文件示例,使用webClient实现
- java中Struts2 的文件上传和下载示例
- ASP.NET上传下载文件示例,使用webClient实现
- ASP.NET上传下载文件示例,使用webClient实现
- java架构搭建(六)--struts2上传和下载文件(使用到拦截器)
- Struts2使用注解实现文件的上传与下载(二)
- 使用Struts2简单的基本文件上传下载实现
- 使用Struts2实现简单的文件上传和下载
- 使用Struts2实现文件的上传与动态下载
- Struts2使用注解实现文件的上传与下载(二)
- Struts2(三)使用Struts2实现文件的上传和下载
- 使用Struts2实现文件的上传和下载