`

servlet实现文件下载

阅读更多
/**
 * @author gao_jie
 * 文件下载函数
 *
 */
public class FileDownLoadSevrlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) {
		try {
			request.setCharacterEncoding("UTF-8");// 设置编码方式使得url中的汉字能处理
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		}
		String oldTemplateName = request.getParameter("palatename");
		String fileName = null;
		String dir = null;
		File file = null;
		ITemplateManager iTemplateManager = TemplateManagerImpl.getInstance(); // 模板下载接口
		String templatename = null;
		if (oldTemplateName != null) {
			try {
				templatename = new String(oldTemplateName
						.getBytes("ISO-8859-1"), "UTF-8");
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
			String tempPath = iTemplateManager.getTemplatePath();
			// 使用接口先生成文件然后下载
			if (templatename.contains(File.separator)) {
				fileName = templatename.substring(templatename
						.lastIndexOf(File.separator) + 1);
				if (templatename.contains("templates")) {
					dir = templatename.substring(templatename
							.indexOf("templates") + 10, templatename
							.lastIndexOf(File.separator))
							+ "";
				} else {
					dir = templatename.substring(0, templatename
							.lastIndexOf(File.separator))
							+ "";
				}
			} else {
				fileName = templatename;
				dir = "";
			}
			try {
				file = iTemplateManager.downloadTemplate(fileName, tempPath
						+ File.separator + dir);
			} catch (ReportException e) {
				e.printStackTrace();
			}

			// 下载做的准备
			response.setContentType("textml;charset=UTF-8");
			response.setContentType("application/x-msdownload;charset=UTF-8");
			response.setHeader("Content-Disposition", "attachment; filename=\""
					+ fileName + "\"");
			FileReader fileReader = null;
			BufferedReader reader = null;
			BufferedWriter writer = null;
			try {
				fileReader = new FileReader(file.toString());
				reader = new BufferedReader(new FileReader(file.toString()));
				writer = new BufferedWriter(response.getWriter());
				String line = null;
				while ((line = reader.readLine()) != null) {
					writer.write(line);
				}
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				if (fileReader != null)
					try {
						fileReader.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				if (reader != null)
					try {
						reader.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				if (writer != null)
					try {
						writer.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
			}
		}
	}
}

 

分享到:
评论

相关推荐

    java servlet实现文件下载

    Java Servlet是一种Java编程语言...通过这个简单的Java Servlet实现,我们可以为用户提供一个安全、可控的文件下载服务。理解这些基本步骤和相关的HTTP概念,将有助于你更好地设计和实现Web应用程序中的文件下载功能。

    Servlet实现文件下载

    Servlet实现文件下载public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{ String str = this.getServletContext().getRealPath("/download/隐形的翅膀 -...

    jsp+servlet实现文件下载

    JSP+Servlet 实现文件下载 在 Web 应用中,实现文件下载是非常常见的需求。通过 JSP 和 Servlet,可以轻松地实现文件下载功能。下面将对 JSP+Servlet 实现文件下载的知识点进行详细的解释。 Step 1: 配置 web.xml ...

    java jsp+servlet实现文件下载(而不是在网页中显示出文件内容) 迅雷下载功能.zip

    本项目的核心是实现文件下载功能,而不是在浏览器中显示文件内容,尤其针对迅雷这样的第三方下载工具进行优化。下面我们将深入探讨如何使用Java的这些技术来实现这一目标。 首先,`jsp`是Java的一个视图技术,主要...

    jsp+servlet实现大型文件下载

    综上所述,实现“jsp+servlet实现大型文件下载”涉及Servlet和JSP的基本使用,文件流操作,HTTP协议的理解,以及安全性和性能优化等多个知识点。通过理解并掌握这些,你可以构建出高效且安全的文件下载服务。

    Servlet实现下载

    ### Servlet 实现文件下载知识点详解 #### 一、Servlet简介及应用场景 Servlet 是 Java Web 开发中的一个重要组件,它主要用于处理客户端发送至服务器的 HTTP 请求,并返回相应的响应。Servlet 的核心接口是 `...

    使用Servlet实现文件的下载

    在这个场景中,"使用Servlet实现文件的下载"是一个常见的需求,特别是在构建动态网站时,用户可能需要下载服务器上的文件。以下是关于如何使用Servlet实现文件下载的详细步骤和知识点: 1. **创建Servlet**:首先,...

    SERVLET实现下载

    本教程将详细讲解如何使用Servlet实现文件下载功能,包括对中文和特殊符号的支持,以及在JSP页面上进行中文下载的处理。 首先,我们需要了解Servlet的基本工作流程。当客户端(浏览器)发起一个HTTP GET或POST请求...

    servlet实现上传下载 java源码

    在这个场景中,我们关注的是如何使用Servlet来实现文件的上传和下载功能,同时结合Tomcat服务器和XML文件进行数据存储。以下是关于这些知识点的详细说明: 1. **Servlet**: Servlet是Java EE规范的一部分,它是一...

    servlet 文件上传下载例子

    在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...

    CKEditor 上传文件(Servlet实现)

    通过以上步骤,你可以成功地在CKEditor 3.6.0中集成Servlet实现的文件上传功能。这个过程不仅适用于图片,还可以扩展到其他类型的文件,如文档、音频和视频。注意在实际应用中,根据服务器环境和项目需求进行相应的...

    JSP+Servlet实现文件上传到服务器功能

    本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao、service、servlet 这三层是主要的结构,类似 MVC ...

    servlet实现文件上传下载

    本教程将详细讲解如何使用Servlet实现文件的上传和下载功能,其中涉及到的主要技术点包括Servlet API、Multipart解析以及文件流操作。 首先,我们需要了解Servlet在文件上传中的作用。Servlet在接收到客户端(通常...

    Servlet实现文件下载功能

    Servlet实现文件下载功能 Servlet实现文件下载功能是指通过Servlet来实现文件的下载功能,主要是将文件存储在服务器端,然后通过Servlet将文件传输给客户端实现下载。下面是Servlet实现文件下载功能的详细知识点: ...

    jsp+servlet实现文件上传下载

    ### jsp+servlet实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...

    基于Servlet实现文件的上传与下载

    "基于Servlet实现文件的上传与下载"是一个常见的实战任务,它涵盖了网络编程、多线程和文件I/O等多个核心概念。这里我们将深入探讨如何利用Servlet来实现这两个功能。 首先,让我们了解Servlet的工作原理。Servlet...

    Servlet实现多文件批量下载

    总之,通过Servlet实现多文件批量下载,主要涉及HTTP响应设置、文件流操作以及ZIP压缩技术。这个功能可以帮助用户更高效地下载多个文件,提升用户体验。希望这个示例对你和其他开发者有所帮助,节省寻找解决方案的...

    JSP/servlet实现上传下载

    以上就是使用JSP和Servlet实现文件上传下载的基本流程和关键代码。在实际应用中,我们还需要考虑错误处理、安全性(如防止文件覆盖、上传恶意文件等)以及性能优化(如使用缓冲、断点续传等)。在大型项目中,可能还...

    servlet简单实现文件下载的方法

    总结来说,Servlet实现文件下载的关键在于正确设置HTTP响应头和使用输入/输出流进行文件内容的传输。这个过程涉及到对文件I/O、HTTP协议以及Servlet生命周期的理解。希望这个解释有助于你更好地理解和实现Java Web中...

    使用Servlet实现文件的上传与下载

    本教程将详细讲解如何使用Servlet实现文件的上传和下载功能,这对于任何Web应用程序来说都是至关重要的。 首先,我们来了解一下Servlet的基本概念。Servlet是Java编程语言中一个用于扩展服务器功能的接口,主要应用...

Global site tag (gtag.js) - Google Analytics