`
zhy584520
  • 浏览: 183878 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

struts2文件下载功能实现

    博客分类:
  • j2ee
阅读更多

Struts2配置如下: 

 

<action name="download" class="sgProcessListAction"> <result name="success" type="stream"> <param name="contentType">application/octet-stream;charset=ISO8859-1</param> <param name="inputName">inputStream</param> <param name="contentDisposition">attachment;filename=${downloadFileName}</param> <param name="bufferSize">4096</param> </result> </action>


 

 

配置参数说明:

contentType

内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XMLimage/gif代表 GIF图片,image/jpeg代表JPG图片,如果文件类型未知的话就使用application/octet-stream

inputName

下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream 的属性需要编写getInputStream()方法

contentDisposition

文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为:

attachment; filename=${downloadFileName},表示文件下载的时候保存的名字应为动态获取的文件名称 。如果直接写filename=${downloadFileName} ,那么默认情况是代表inline ,浏览器会尝试自动打开它,等价于这样的写法:inline; filename=${downloadFileName}

bufferSize

下载缓冲区的大小

SgProcessListAction代码如下:

public class SgProcessListAction extends ActionSupport {

	private SgProcessListService sgProcessListService;
	private SgProcessList  sgProcessList;
	private List<SgProcessList>  sgProcessLists;
	private String fileName;// 初始的通过param指定的文件名属性 
	
    public void setFileName(String fileName) {
		this.fileName = fileName;
	}

	/** 提供转换编码后的供下载用的文件名 */   
  
    public String getDownloadFileName() {   
  
        String downFileName = fileName;   
  
        try {   
  
            downFileName = new String(downFileName.getBytes(), "ISO8859-1");   
  
        } catch (UnsupportedEncodingException e) {   
  
            e.printStackTrace();   
  
        }   
  
        return downFileName;   
  
    }   

	public SgProcessListService getSgProcessListService() {
		return sgProcessListService;
	}
	public void setSgProcessListService(SgProcessListService sgProcessListService) {
		this.sgProcessListService = sgProcessListService;
	}
	public SgProcessList getSgProcessList() {
		return sgProcessList;
	}
	public void setSgProcessList(SgProcessList sgProcessList) {
		this.sgProcessList = sgProcessList;
	}
	public List<SgProcessList> getSgProcessLists() {
		return sgProcessLists;
	}
	public void setSgProcessLists(List<SgProcessList> sgProcessLists) {
		this.sgProcessLists = sgProcessLists;
	}
	
	public String list() throws Exception {
		// TODO Auto-generated method stub 
		return super.execute();
	}
	public InputStream getInputStream() throws Exception {
		// TODO Auto-generated method stub
		HttpServletRequest request=ServletActionContext.getRequest();
		int id=Integer.valueOf(request.getParameter("id"));
		this.sgProcessList=this.sgProcessListService.findByID(id);
		String targetDirectory = request.getRealPath("/sgfiles/");
		if(sgProcessList.getPType()==0)//责任认定
		{
			targetDirectory+="\\rd\\"+sgProcessList.getPUrl();
		}
		if(sgProcessList.getPType()==1)//结案报告
		{
			targetDirectory+="\\ja\\"+sgProcessList.getPUrl();
		}
		this.fileName=sgProcessList.getPname();
		return new FileInputStream(targetDirectory);
	}
	public String add() throws Exception {
		// TODO Auto-generated method stub
		return super.execute();
	}
	public String del() throws Exception {
		// TODO Auto-generated method stub
		HttpServletRequest req=ServletActionContext.getRequest();
		HttpServletResponse response=ServletActionContext.getResponse();
		response.setContentType("text/html; charset=UTF-8");
		Integer id=Integer.valueOf(req.getParameter("id").toString());
		this.sgProcessList=this.sgProcessListService.findByID(id);
		try
		{
		this.DeleteFile(sgProcessList.getPType(),sgProcessList.getPUrl());
		this.sgProcessListService.deleteSgProcessList(id);
		response.getWriter().println("1");
		response.getWriter().close();
		}
		catch(Exception e){
			response.getWriter().println("0");
			response.getWriter().close();
		}
		return null;
	}
	private Boolean DeleteFile(int _type,String _name)
	{
		HttpServletRequest request = ServletActionContext.getRequest();
		String targetDirectory = request.getRealPath("/sgfiles/");
		if(_type==0)
		{
			targetDirectory+="\\rd\\"+_name;
		}
		else
		{
			targetDirectory+="\\ja\\"+_name;
		}
		File f=new File(targetDirectory);
		if(f.exists())
		{
			f.delete();
			return true;
		}
		else
		{
			return false;
		}
	}
	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return SUCCESS;
	}
}

 

 

 

 

分享到:
评论

相关推荐

    struts2实现文件下载功能

    在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...

    struts2下载功能实现

    在Struts2中实现下载功能是一项常见的需求,这通常涉及到处理文件流并将其发送到客户端。以下是如何在Struts2中实现下载功能的详细步骤: 1. **Struts2配置**: 在Struts2的配置文件(例如struts.xml或类似的配置...

    struts实现的文件上传下载功能

    在这个特定的场景中,我们关注的是如何使用Struts来实现文件的上传和下载功能。这个功能对于任何Web应用来说都是非常重要的,因为它允许用户交互地处理数据和资源。 首先,我们需要理解文件上传的基本流程。在...

    struts2文件上传下载源代码

    这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件到服务器。在Struts2中,这通常通过表单实现,表单包含一个`&lt;input type="file"&gt;`...

    struts2实现文件上传下载

    本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...

    struts2简单下载功能

    至此,一个基本的Struts2下载功能就实现了。用户点击下载链接,Struts2会通过`DownloadAction`处理请求,读取并返回指定文件,浏览器接收到响应后,会自动弹出文件保存对话框供用户选择保存位置。 请注意,这只是一...

    Struts的文件下载

    在Struts中实现文件下载是一项常见的功能,尤其在处理用户请求获取服务器上的静态或动态资源时。这篇博文将深入探讨如何在Struts框架下实现文件下载的功能。 首先,我们需要了解文件下载的基本原理。当用户点击下载...

    基于Struts2的文件上传下载功能的完整源代码。

    在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...

    struts1和struts2分别实现文件上传下载功能

    Struts1和Struts2是两个非常著名的Java Web框架,它们都提供了处理文件上传和下载的功能,但实现方式有所不同。本文将深入探讨这两个框架在文件操作方面的具体实现。 首先,让我们了解一下Struts1中的文件上传功能...

    struts2实现文件下载实例源代码

    在Struts2中实现文件下载的功能,可以帮助用户从服务器获取并保存文件到本地计算机,例如这里的"1.xls"文件。下面我们将深入探讨如何在Struts2框架下实现文件下载的实例。 首先,我们需要在项目的Web应用目录结构中...

    Struts2实现文件的上传下载

    Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中,提供了丰富的功能,包括文件的上传和下载。在本项目中,我们关注的是如何使用Struts2来实现实时的文件交互操作,即文件的上传与...

    Struts2+Jquery+Ajax

    Struts2作为Controller层,通过Action类来实现业务逻辑,并通过配置文件或注解来定义Action与URL的映射关系。 Jquery是一个高效的JavaScript库,简化了HTML文档遍历、事件处理、动画以及Ajax交互。它使得开发者能更...

    struts2中文学习文档

    从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...

    struts2实现多文件上传下载

    网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供刚上传的文件下载功能(其他的都可以在其上面进行扩充) 多文件 上传 下载...

    Struts2之struts2文件下载详解案例struts012

    本案例"Struts2之struts012"将深入探讨如何在Struts2中实现文件下载的功能。 首先,我们需要创建一个Action类,它是Struts2的核心组件,用于处理用户的请求。在Action类中,我们将定义一个方法,该方法负责获取要...

    struts2_uploadify带进度条的多文件上传下载

    总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...

    struts2实现简单功能

    在本教程中,我们将深入探讨如何使用Struts2来实现简单的功能。 首先,我们需要了解Struts2的核心概念。Action类是Struts2的核心组件,它是业务逻辑的载体,负责接收请求并进行处理。为了创建一个Action,我们需要...

    struts2文件下载

    在“struts2文件下载”这个主题中,我们主要关注的是如何使用Struts2来实现文件的下载功能。这篇博客文章可能探讨了在Struts2环境下处理文件下载的步骤和技术。 在Struts2中,`DownloadAction.java`很可能是一个...

    Struts2文件流方式导出下载excel、Txt、image图片

    通过上述步骤,我们就可以在Struts2框架下实现文件流方式的下载功能,无论是Excel、TXT还是图片,都能有效地直接返回给浏览器,让客户端进行下载。这种方式既节省了服务器资源,也提高了用户体验。在实际项目中,...

    Struts2实现上传功能源码

    在本案例中,我们关注的是如何使用Struts2实现文件上传的功能,这在许多Web应用中都是一个常见的需求,比如用户上传头像、提交文档等。 首先,理解上传功能的基本原理。在HTTP协议中,文件上传通常通过表单的POST...

Global site tag (gtag.js) - Google Analytics