`

servlet实现文件下载

阅读更多
servlet下载文件的原理:
把服务器上的文件以application/octet-stream的响应类型输出到JSP页面。

下载页面download.jsp
<body>
     <a href="FileDownloadServlet?filename=jd2chm.exe">二进制文件</a><br>
     <a href="FileDownloadServlet?filename=test.txt">文本文件</a><br>
     <a href="FileDownloadServlet?filename=文件格式兼容包.exe">中文文件名</a><br>
</body>


Servelt-FileDownloadServlet:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FileDownloadServlet extends HttpServlet
{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
			IOException
	{
		String filename = req.getParameter("filename");
		if (null == filename || "".equals(filename))
		{
			resp.sendRedirect("download_error.jsp");
			return;
		}
		// 下载文件
		download(req, resp, filename);
	}

	@SuppressWarnings("deprecation")
	private void download(HttpServletRequest req, HttpServletResponse resp, String filename)
			throws ServletException, IOException
	{
		String filePath = req.getRealPath("/upload/" + filename);
		File file = new File(filePath);
		//请求文件不存在
		if (!file.exists())
		{
			resp.sendRedirect("download_error.jsp");
			return;
		}
		
		InputStream is = new BufferedInputStream(new FileInputStream(file));
		OutputStream os = new BufferedOutputStream(resp.getOutputStream());

		//响应类型
		resp.setContentType("application/octet-stream"); 
		//解决下载文件中文乱码
		filename = new String(filename.getBytes("utf-8"), "ISO-8859-1");
		//保存对话框显示的文件名
		resp.addHeader("Content-Disposition", "attachment;filename=" + filename); 
		//保存对话框显示下载文件的大小
		resp.addHeader("Content-Length", "" + file.length()); 

		byte[] buff = new byte[1024];
		for (int length = 0; -1 != (length = is.read(buff));)
		{
			os.write(buff, 0, length);
		}
		os.close();
		is.close();
	}
}



server.xml配置:
<servlet>
    <servlet-name>FileDownloadServlet</servlet-name>
    <servlet-class>FileDownloadServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>FileDownloadServlet</servlet-name>
    <url-pattern>/FileDownloadServlet</url-pattern>
</servlet-mapping>


下载失败页面:download_error.jsp
<body>
     <h1>下载失败!</h1>
 </body>
分享到:
评论

相关推荐

    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