/**
* @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编程语言...通过这个简单的Java Servlet实现,我们可以为用户提供一个安全、可控的文件下载服务。理解这些基本步骤和相关的HTTP概念,将有助于你更好地设计和实现Web应用程序中的文件下载功能。
Servlet实现文件下载public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{ String str = this.getServletContext().getRealPath("/download/隐形的翅膀 -...
JSP+Servlet 实现文件下载 在 Web 应用中,实现文件下载是非常常见的需求。通过 JSP 和 Servlet,可以轻松地实现文件下载功能。下面将对 JSP+Servlet 实现文件下载的知识点进行详细的解释。 Step 1: 配置 web.xml ...
本项目的核心是实现文件下载功能,而不是在浏览器中显示文件内容,尤其针对迅雷这样的第三方下载工具进行优化。下面我们将深入探讨如何使用Java的这些技术来实现这一目标。 首先,`jsp`是Java的一个视图技术,主要...
综上所述,实现“jsp+servlet实现大型文件下载”涉及Servlet和JSP的基本使用,文件流操作,HTTP协议的理解,以及安全性和性能优化等多个知识点。通过理解并掌握这些,你可以构建出高效且安全的文件下载服务。
### Servlet 实现文件下载知识点详解 #### 一、Servlet简介及应用场景 Servlet 是 Java Web 开发中的一个重要组件,它主要用于处理客户端发送至服务器的 HTTP 请求,并返回相应的响应。Servlet 的核心接口是 `...
在这个场景中,"使用Servlet实现文件的下载"是一个常见的需求,特别是在构建动态网站时,用户可能需要下载服务器上的文件。以下是关于如何使用Servlet实现文件下载的详细步骤和知识点: 1. **创建Servlet**:首先,...
本教程将详细讲解如何使用Servlet实现文件下载功能,包括对中文和特殊符号的支持,以及在JSP页面上进行中文下载的处理。 首先,我们需要了解Servlet的基本工作流程。当客户端(浏览器)发起一个HTTP GET或POST请求...
在这个场景中,我们关注的是如何使用Servlet来实现文件的上传和下载功能,同时结合Tomcat服务器和XML文件进行数据存储。以下是关于这些知识点的详细说明: 1. **Servlet**: Servlet是Java EE规范的一部分,它是一...
在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...
通过以上步骤,你可以成功地在CKEditor 3.6.0中集成Servlet实现的文件上传功能。这个过程不仅适用于图片,还可以扩展到其他类型的文件,如文档、音频和视频。注意在实际应用中,根据服务器环境和项目需求进行相应的...
本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao、service、servlet 这三层是主要的结构,类似 MVC ...
本教程将详细讲解如何使用Servlet实现文件的上传和下载功能,其中涉及到的主要技术点包括Servlet API、Multipart解析以及文件流操作。 首先,我们需要了解Servlet在文件上传中的作用。Servlet在接收到客户端(通常...
Servlet实现文件下载功能 Servlet实现文件下载功能是指通过Servlet来实现文件的下载功能,主要是将文件存储在服务器端,然后通过Servlet将文件传输给客户端实现下载。下面是Servlet实现文件下载功能的详细知识点: ...
### jsp+servlet实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...
"基于Servlet实现文件的上传与下载"是一个常见的实战任务,它涵盖了网络编程、多线程和文件I/O等多个核心概念。这里我们将深入探讨如何利用Servlet来实现这两个功能。 首先,让我们了解Servlet的工作原理。Servlet...
总之,通过Servlet实现多文件批量下载,主要涉及HTTP响应设置、文件流操作以及ZIP压缩技术。这个功能可以帮助用户更高效地下载多个文件,提升用户体验。希望这个示例对你和其他开发者有所帮助,节省寻找解决方案的...
以上就是使用JSP和Servlet实现文件上传下载的基本流程和关键代码。在实际应用中,我们还需要考虑错误处理、安全性(如防止文件覆盖、上传恶意文件等)以及性能优化(如使用缓冲、断点续传等)。在大型项目中,可能还...
总结来说,Servlet实现文件下载的关键在于正确设置HTTP响应头和使用输入/输出流进行文件内容的传输。这个过程涉及到对文件I/O、HTTP协议以及Servlet生命周期的理解。希望这个解释有助于你更好地理解和实现Java Web中...
本教程将详细讲解如何使用Servlet实现文件的上传和下载功能,这对于任何Web应用程序来说都是至关重要的。 首先,我们来了解一下Servlet的基本概念。Servlet是Java编程语言中一个用于扩展服务器功能的接口,主要应用...