`

从数据库下载文件

阅读更多
public ActionForward downloadFile(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
	long id=ParamUtils.getLongParameter(request, "id", 0l);
	try {
		HqjcDepaAttach annex=(HqjcDepaAttachImpl)depaAttachManager.get(id);
		//String fileName = this.currentTime();
		String filePath = request.getRealPath("/temp")+annex.getAccachValue();
		File file = new File(filePath);
		byte[] bytes = annex.getAttachFile();
		FileOutputStream fos = new FileOutputStream(file); 
		fos.write(bytes);
        if(fos != null){
           fos.flush();
           fos.close();
		}
		String suffix=annex.getAccachValue().substring(annex.getAccachValue().indexOf(".")+1).toUpperCase();
		String dataType="application/octet-stream";
		if("BMP".equals(suffix)){
			dataType="image/bmp";
		}else if("GIF".equals(suffix)){
			dataType="image/gif";
		}else if("JPEG".equals(suffix)||"JPG".equals(suffix)){
			dataType="image/jpeg";
		}else if("TXT".equals(suffix)){
			dataType="text/plain";
		}else if("PDF".equals(suffix)){
			dataType="application/pdf";
		}else if("DOC".equals(suffix)){
			dataType="application/msword";
		}else if("XLS".equals(suffix)){
			dataType="application/vnd.ms-excel";
		}else if("PPT".equals(suffix)){
			dataType="application/vnd.ms-powerpoint";
		}else if("HTML".equals(suffix)||"HTM".equals(suffix)){
			dataType="text/html";
		}else if("XML".equals(suffix)){
			dataType="text/xml";
		}
	    // 现在用户对该文档拥有下载权限 以字节流的形式下载文件
		response.setContentType(dataType); // 设置头,浏览器不认识就提示下载
		response.setHeader("Content-Disposition", "attachment; filename="+URLEncoder.encode(annex.getAccachValue(), "UTF-8"));
		// 以流的形式写出文件
		FileInputStream bis = new FileInputStream(file);//以流的形式写出文件
		OutputStream bos = response.getOutputStream();
		byte[] buff = new byte[1024];
		int readCount = 0;
		readCount = bis.read(buff);
		while (readCount != -1){
		    bos.write(buff, 0, readCount);
			readCount = bis.read(buff);
		}
		if (bis != null) bis.close();
		if (bos != null) bos.close();
		//下载完毕,给浏览器发给完毕的头
		response.setStatus(HttpServletResponse.SC_OK);
		response.flushBuffer();

	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}	
	
	
	return null;
}

 

分享到:
评论

相关推荐

    c# 操作文件上传数据库,再从数据库下载存放至本地

    C# VS2019通过 本应用程序 主要是实现 将 图片,word、excel、PDF、image等类型的文件上传至数据库,存储起来,并实现了 从数据库中将存储的文件 读取解析成 原有的文件存放至本地, 主要解决了 多个客户端可以共享...

    c# 数据库存取文件与下载

    3. **从数据库下载文件**: - 查询数据库获取文件的BLOB数据或路径信息。 - 如果是BLOB存储,创建一个`MemoryStream`,将数据库返回的二进制数据写入其中。 - 设置响应头,如`Content-Type`和`Content-...

    保存任何文件和从数据库导出文件到本地磁盘

    在IT领域,保存文件和从数据库导出文件到本地磁盘是常见的操作,尤其是在软件开发中。本主题主要涉及文件操作、数据库交互以及C#编程语言的应用。以下将详细阐述这些知识点。 首先,文件操作是计算机编程的基础。在...

    从数据库读取图片文件

    当我们谈论“从数据库读取图片文件”时,通常涉及的是将图片作为BLOB(Binary Large Object)类型存储在数据库中,然后通过应用程序或API从数据库检索并显示这些图片。这一过程涉及到多个关键知识点,让我们逐一深入...

    c#中上传下载文件到数据库的源代码

    在C#编程中,将文件上传到数据库以及从数据库下载文件是常见的操作,尤其是在构建Web应用程序时。这个源代码示例可能包含一个完整的Web站点项目(WebSite4),用于演示如何处理这种数据存储。以下是对这些关键知识点...

    上传文件至数据库并下载

    5. 利用查询语句从数据库中获取数据,并在报表模板中设置下载链接以供用户下载文件。 以上过程需要在FineReport报表工具中按照具体的操作步骤来实现。同时,对于不同的数据库系统,需要根据其特性来适当调整操作和...

    基于C++BUILDER的对存储于数据库的文件的操作.pdf

    从数据库下载文件的过程与上传相反,需要从数据库中检索BLOB数据,并将其转换回原始文件格式。在C++Builder中,可以使用TADOTable和TADOBlobField组件来读取数据库中的BLOB字段,再通过文件流(如TFileStream)将其...

    java从数据库查询文件下载成Excel

    filename=yourfile.xls`,指导浏览器以附件形式下载文件。然后,使用`ServletOutputStream`读取硬盘上的Excel文件内容,并写入到HTTP响应流中。 最后,为了保持系统的整洁,通常在用户下载完文件后删除临时生成的...

    Northwind 示例数据库文件下载

    【Northwind 示例数据库文件下载】 Northwind 是一个广泛使用的示例数据库,由 Microsoft 提供,用于展示 SQL Server 数据库管理系统的基础功能和特性。这个数据库包含了关于一个虚构的全球食品分销公司的数据,...

    将文件上传、下载(以二进制流保存到数据库)实现代码

    2. 文件下载:当用户需要下载文件时,后端从数据库中读取对应文件的二进制流,然后将其转换成文件格式,并通过Web服务器发送给用户。用户的浏览器或下载工具接收到数据后,可以将其保存到本地或直接打开。 具体到...

    从ftp上下载txt文件插入到数据库中的原文件

    本教程将详细讲解如何利用Kettle从FTP服务器下载TXT文件并将其内容插入到数据库中。 首先,我们需要理解Kettle的工作流程。它通过工作流(Job)和转换(Transformation)两个主要组件来实现数据处理。工作流用于...

    C# 文件保存到数据库中或者从数据库中读取文件

    ### C# 中将文件保存至数据库或从数据库读取文件:深入解析与实践 #### 一、背景介绍 在软件开发领域,特别是Web应用开发中,处理文件上传和下载是常见的需求之一。对于某些场景,如用户头像、文档、图片等小型...

    通过数据库来保存文件信息

    加载文件时,查询数据库以获取相关信息,然后根据路径从磁盘读取文件。 二、输入路径保存到数据库 1. 输入处理:用户提供的文件路径需要经过解析,提取出必要的元数据,如文件名、扩展名、路径分隔符等,然后存储...

    ASP.NET文件上传到ORACLE和下载

    本文将详细介绍如何使用ASP.NET实现文件上传到Oracle数据库以及从数据库下载文件的功能。 #### 二、文件上传到Oracle数据库 本案例中的`insert_fj`方法实现了将文件上传至Oracle数据库的功能。 1. **初始化变量**...

    C#保存任何文件和从数据库导出文件到本地磁盘

    在C#编程中,保存任何类型的文件到本地磁盘以及从数据库导出文件是常见的操作。这涉及到文件I/O操作和数据库交互。以下是一些关键的知识点: 1. **文件I/O操作**: - `System.IO`命名空间:这是C#中处理文件和目录...

    jsp+js+oracle 实现文件上传数据库,下载到本地

    当用户请求下载文件时,JSP页面会根据数据库中的文件ID查询对应的BLOB数据,然后通过HTTP响应将文件内容返回给客户端。这里需要注意设置正确的HTTP响应头,如`Content-Type`表示文件类型,`Content-Disposition`指定...

    Arcgis创建企业级数据库许可文件

    Arcgis创建企业级数据库许可文件

    完整的员工数据库SQL文件

    完整的员工数据库SQL文件,方便学习、练习MySQL。欢迎大家下载交流

    SSH3+Oracle数据库实现文件上传下载的项目

    - **文件下载**:用户请求下载时,服务器从数据库中检索文件信息,找到对应的文件路径,然后读取文件内容并返回给客户端。 6. **安全性考虑**: 文件上传过程中需要防止恶意文件(如病毒或脚本文件)的上传,通常...

    jsp+servlet文件上传数据库和下载

    当用户请求下载文件时,Servlet从数据库中查询到文件的相关信息,然后根据文件路径从服务器上读取文件。通过设置HTTP响应头,可以控制浏览器如何处理这个响应,例如设置`Content-Type`为文件的MIME类型,`Content-...

Global site tag (gtag.js) - Google Analytics