`

文件下载Servlet

阅读更多
mport cn.javass.ssonline.upload.util.UploadUtils; 
 
import java.io.*; 
import java.net.URLDecoder; 
import java.net.URLEncoder; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
public class DownloadServlet extends HttpServlet 

  protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException 
  { 
    doPost(req, resp); 
  } 
 
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
  { 
    //只允许有一个参数 filename 
 
    String filename = new String(req.getQueryString().getBytes("ISO-8859-1"), "UTF-8").substring(9); 
    if ((filename == null) || (filename.trim().length() == 0) || (filename.contains("\\.\\."))) { 
      resp.setContentType("text/html;charset=utf-8"); 
      resp.getWriter().write("您下载的文件不存在!"); 
      return; 
    } 
    download(req, resp, filename); 
  } 
 
  private void download(HttpServletRequest request, HttpServletResponse response, String filename) 
  { 
    String userAgent = request.getHeader("User-Agent"); 
    boolean isIE = (userAgent != null) && (userAgent.toLowerCase().indexOf("msie") != -1); 
    try 
    { 
      filename = URLDecoder.decode(filename, "UTF-8"); 
 
      String filePath = UploadUtils.getUploadDir(request) + filename; 
 
      File file = new File(filePath); 
      if ((!(file.exists())) || (!(file.canRead()))) { 
        response.setContentType("text/html;charset=utf-8"); 
        response.getWriter().write("您下载的文件不存在!"); 
        return; 
      } 
      byte[] buf = new byte[1024]; 
      int len = 0; 
      BufferedInputStream br = null; 
      OutputStream ut = null; 
      response.reset(); 
 
      response.setHeader("Pragma", "No-cache"); 
      response.setHeader("Cache-Control", "must-revalidate, no-transform"); 
      response.setDateHeader("Expires", 0L); 
 
      String displayFilename = filename.substring(filename.lastIndexOf("_") + 1); 
      displayFilename = displayFilename.replace(" ", "_"); 
      response.setContentType("application/x-download"); 
 
      displayFilename = "[私塾在线学习网]"+displayFilename; 
      if (isIE) { 
        displayFilename = URLEncoder.encode(displayFilename, "UTF-8"); 
        response.setHeader("Content-Disposition", "attachment;filename=\"" + displayFilename + "\""); 
      } else { 
        displayFilename = new String(displayFilename.getBytes("UTF-8"), "ISO8859-1"); 
        response.setHeader("Content-Disposition", "attachment;filename=" + displayFilename); 
      } 
 
      br = new BufferedInputStream(new FileInputStream(file)); 
      ut = response.getOutputStream(); 
      while ((len = br.read(buf)) != -1) 
        ut.write(buf, 0, len); 
    } 
    catch (Exception e) { 
      e.printStackTrace(); 
    } 
  } 
}
分享到:
评论

相关推荐

    文件下载servlet

    文件下载servlet,java文件下载。

    servlet上传下载文件

    Servlet技术广泛应用于文件上传和下载的功能实现,因为它们可以方便地与客户端交互并处理数据流。在本例中,我们将深入探讨如何使用Servlet来实现文件上传和下载功能。 首先,让我们了解文件上传的基本流程。当用户...

    Servlet中文件上传和下载

    本文将深入探讨如何在Servlet中实现文件的上传和下载功能,以及在页面上利用JSP和Javabean来实例化对象。 首先,文件上传是通过HTTP多部分请求(Multipart Request)来实现的。Servlet 3.0及以上版本提供了对这种...

    servlet实现文件上传下载

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

    文件上传与下载servlet

    在IT行业中,文件上传与下载是Web应用中常见的功能,特别是在企业级系统中,例如文档管理系统、在线教育平台等。Servlet作为Java Web开发中的一个重要组件,常被用来处理这些操作。下面将详细介绍如何使用Servlet...

    servlet文件下载项目

    在这个"Servlet文件下载项目"中,我们利用Servlet技术来实现文件的下载功能。这是一个非常实用的功能,尤其对于那些需要向用户提供文件下载服务的网站或应用。 首先,我们需要了解Servlet的基本工作原理。Servlet是...

    servlet 文件上传下载例子

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

    文件上传下载servlet自用

    在IT行业中,文件上传下载是Web应用中常见的功能,尤其在服务器端编程中,Servlet扮演着重要的角色。Servlet是Java编程语言中用于扩展服务器功能的接口,它可以在接收到HTTP请求后进行处理,并向客户端返回响应。在...

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

    这个链接会指向一个`servlet`,由`servlet`来处理实际的文件读取和下载逻辑。 1. **创建Servlet**:首先,我们需要创建一个自定义的`servlet`,例如`FileDownloadServlet`。在`src`目录下的Java源代码文件中,我们...

    java servlet实现文件下载

    本示例中,我们将探讨如何使用Java Servlet来实现文件的下载功能。 首先,理解HTTP协议是至关重要的,因为它定义了客户端(浏览器)与服务器之间的通信方式。在文件下载场景中,服务器需要响应一个HTTP请求,该请求...

    servlet文件简单代码

    #### 二、文件下载Servlet代码详解 ##### 1. 导入必要的包 ```java import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import ...

    servlet-api.jar 下载地址

    Servlet-api.jar是Java Web开发中不可或缺的一个库文件,它包含了Servlet和JSP(JavaServer Pages)规范的API接口。这个库文件主要用于与Web服务器交互,处理HTTP请求,并生成响应。在本文中,我们将深入探讨Servlet...

    javax.servlet-api-4.0.0-API文档-中文版.zip

    赠送原API文档:javax.servlet-api-4.0.0-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.0-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.0.pom; 包含翻译后的API文档:javax.servlet-api-4.0.0...

    基于servlet的文件下载代码

    特别是在企业级应用中,用户经常需要下载诸如报告文档、数据备份等文件。Java Servlet作为一种强大的服务器端技术,可以很好地实现这一功能。本文将详细介绍一个基于Servlet的文件下载代码示例,并对其实现原理进行...

    Servlet3.1规范官方文档(中文版)

    根据提供的文件内容,以下是对Servlet3.1规范官方文档(中文版)中的知识点的详细说明。 首先,Servlet3.1官方文档是Java™ Servlet规范版本3.1的中文翻译版本。它详细描述了servlet技术规范的各个方面,包括对...

    答Servlet下载文件的附件

    这篇博客"答Servlet下载文件的附件"可能涉及了如何利用Servlet来实现文件的下载功能,让我们深入探讨这个话题。 首先,我们需要了解Servlet生命周期中的service()方法。当一个HTTP请求到达服务器,Servlet容器(如...

    用servlet写的文件上传及下载功能带进度条

    自己用servlet写的文件上传及下载功能带进度条 主要用到两个jar:commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar 内容介绍: com.fm.FileManagerService:一个servlet用来实现主要的文件上传下载逻辑的 ...

    jsp,servlet上传下载文件

    jsp、servlet 文件上传下载技术详解 文件上传下载是 Web 应用中的一种常见需求,使用 jsp 页面和 servlet 实现文件上传下载是其中的一种解决方案。下面将详细介绍 jsp、servlet 文件上传下载技术。 文件上传下载...

    jsp+servlet实现大型文件下载

    本教程将深入讲解如何利用JSP和Servlet来实现大型文件的下载功能,这对于构建高效、稳定的Web应用至关重要。 一、Servlet简介 Servlet是Java平台上的一个标准接口,用于扩展服务器的功能。在Web开发中,Servlet通常...

    servlet-api中文文档

    在这个压缩包中,包含的是对Servlet API的中文文档,可能是作者因为无法找到官方的源码和javadoc而自行整理的笔记。 首先,我们来看看servlet的概念。Servlet是一个Java类,它扩展了服务器的功能,可以处理来自...

Global site tag (gtag.js) - Google Analytics