您的位置:首页 > 编程语言 > Java开发

struts2上传下载

2016-07-28 17:53 429 查看
web.xml

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Struts03</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<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>*.action</url-pattern>
</filter-mapping>

</web-app>

struts.xml

<?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="devMode" value="true"></constant>
<!-- 上传文件的大小 -->
<constant name="struts.multipart.maxSize" value="20971520"/>
<package name="struts" extends="struts-default" namespace="/">
<global-results>
<result name="error" type="redirect">/error.jsp</result>
</global-results>
<action name="upload" class="com.hellojava.web.action.UploadAction">
<result name="success" type="redirectAction">
<param name="actionName">loaduploadfile</param>
<param name="namespace">/</param>
</result>
</action>
<action name="loaduploadfile" class="com.hellojava.web.action.LoadUploadFileAction">
<result name="success">/index.jsp</result>
</action>

<action name="download" class="com.hellojava.web.action.DownLoadAction">
<result name="success" type="stream">
<!-- 当前文件流的内容类型 -->
<param name="contentType">application/octet-stream</param>
<!-- 流的方法(那个方法提供这个流) -->
<param name="inputName">inputStream</param>
<!-- 下载的文件名称 -->
<param name="contentDisposition">attachment;filename=${fileName}</param>
<!-- 下载缓冲区的大小 -->
<param name="bufferSize">20971520</param>
</result>
</action>
</package>
</struts>
upload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
<form action="upload.action" method="post" enctype="multipart/form-data">
文件:<input type="file" name="upload"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
index.jsp

<%@ 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" "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>
<c:forEach items="${sessionScope.fileNames}" var="fileName">
<a href="download.action?fileName=${fileName}">${fileName}</a>
</c:forEach>
</body>
</html>
uploadAction

package com.hellojava.web.action;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {
//用于封装前台表单中上传的文件
private File upload;
//用于封装上传文件文件的名称(控制器)
private String uploadFileName;
//用于封装上传文件的类型(控制器)
private String uploadContentType;
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}

@Override
public String execute() throws Exception {
String path=ServletActionContext.getServletContext().getRealPath("/upload");
File root=new File(path);
if(!root.exists()){
root.mkdirs();
}
InputStream input=new FileI
9a87
nputStream(this.getUpload());
BufferedInputStream bufferedInputStream=new BufferedInputStream(input);
byte[] bs=new byte[input.available()];
bufferedInputStream.read(bs, 0, bs.length);
bufferedInputStream.close();

OutputStream out=new FileOutputStream(path+"/"+this.getUploadFileName());
BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(out);
bufferedOutputStream.write(bs, 0, bs.length);
bufferedOutputStream.flush();
bufferedOutputStream.close();
return this.SUCCESS;
}
}
DownLoadAction

package com.hellojava.web.action;

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class DownLoadAction extends ActionSupport {
private String fileName;

public String getFileName() {
return fileName;
}

public void setFileName(String fileName) {
this.fileName = fileName;
}

public InputStream getInputStream(){
InputStream input=ServletActionContext.getServletContext().getResourceAsStream("/upload/"+this.getFileName());
return  input;
}

@Override
public String execute() throws Exception {
return this.SUCCESS;
}
}
loadUploadFileAction

package com.hellojava.web.action;

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class DownLoadAction extends ActionSupport {
private String fileName;

public String getFileName() {
return fileName;
}

public void setFileName(String fileName) {
this.fileName = fileName;
}

public InputStream getInputStream(){
InputStream input=ServletActionContext.getServletContext().getResourceAsStream("/upload/"+this.getFileName());
return  input;
}

@Override
public String execute() throws Exception {
return this.SUCCESS;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: