博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于 Struts2 的文件下载
阅读量:4684 次
发布时间:2019-06-09

本文共 2758 字,大约阅读时间需要 9 分钟。

介于上篇我们讲述了基于 Struts2 的单文件和多文件上传,这篇我们来聊一聊基于 Struts2 的文件下载。

1、导 jar 包

commons-io-2.0.1.jar

struts2-core-2.3.15.3.jar

xwork-core-2.3.15.3.jar

struts2-sunspoter-stream-1.2.jar

2、web.xml 配置 Struts2 核心过滤器

1 
2
struts2
3
4 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 5
6
7 8
9
struts2
10
/*
11

3、JSP 文件下载页(注意:链接中 filename 后跟的文件名需与 Action 文件下载路径中已知的文件名一致)

4、实现文件下载上传的 DownloadAction

1 package com.fhcq.action;  2   3 import java.io.File;  4 import java.io.FileInputStream;  5 import java.io.FileNotFoundException;  6 import java.io.InputStream;  7 import java.io.UnsupportedEncodingException;  8 import javax.servlet.ServletContext;  9 import org.apache.struts2.ServletActionContext; 10 import com.opensymphony.xwork2.ActionSupport; 11  12 public class DownloadAction extends ActionSupport { 13  14 	//提供一个InputStream类型的输入流 15 	private InputStream inputStream; //注意:在给InputSteam指定名称时,不能使用in 16 	//创建一个文件名的属性 17 	private String filename; 18  19 	public String download() throws FileNotFoundException{ 20  21 		//1.找到文件的存储路径 22 		ServletContext servletContext = ServletActionContext.getServletContext(); 23 		String realPath = servletContext.getRealPath("/WEB-INF/file"); 24 		//2.根据文件路径和文件名new一个新文件 25 		File file = new File(realPath,filename); 26  27 		//3.把文件读到一个InputStream中 28 		inputStream = new FileInputStream(file); 29 		//4.返回一个SUCCESS 30 		return SUCCESS; 31 		//5.由一个叫做stream的结果类型为我们把剩下的事情做完。 32 	} 33  34 	public InputStream getInputStream() { 35 		return inputStream; 36 	} 37  38 	public void setInputStream(InputStream inputStream) { 39 		this.inputStream = inputStream; 40 	} 41  42 	public String getFilename() { 43  44 		//解决中文文件名在下载过程出现乱码问题,struts.xml中也需添加charset=iso-8859-1 45 		try { 46 			filename=new String(filename.getBytes(),"iso-8859-1"); 47 		} catch (UnsupportedEncodingException e) { 48 			// TODO Auto-generated catch block 49 			e.printStackTrace(); 50 		} 51 		return filename; 52 	} 53  54 	public void setFilename(String filename) { 55 		this.filename = filename; 56 	} 57  58 }

5、配置 struts.xml

1 
2
3
4
5 6
7
8
9
10
11
12
13
14
application/octet-stream;charset=iso-8859-1 15
16
17
attachment;filename=${filename} 18
19
inputStream 20
21
22
23

转载于:https://www.cnblogs.com/justlove/p/6817608.html

你可能感兴趣的文章
java常识
查看>>
15、枚举类型和标志位
查看>>
关于用cin cin.get() getchar(), getline输入时的结束符问题
查看>>
blur和click冲突问题
查看>>
读取TXT并筛选数据写入新建TXT
查看>>
winform窗体(一)——基本属性
查看>>
时间模块,随机数模块,文件操作模块,sys模块
查看>>
light oj 1037 状压dp
查看>>
all,any函数
查看>>
深入了解正则表达式
查看>>
python模块整理3-random模块
查看>>
git 笔记
查看>>
最短路
查看>>
Java web项目使用webSocket
查看>>
CopyOnWriteArrayList 学习笔记
查看>>
转:手册网(程序员开发手册相关网站)
查看>>
转:微服务架构的理论基础 - 康威定律
查看>>
转: NetBean远程开发的格式与过程
查看>>
Eclipse c++代码提示,覆盖下面代码的问题。
查看>>
C#设计模式学习笔记-单例模式
查看>>