`
guodongbingtuan
  • 浏览: 41548 次
  • 性别: Icon_minigender_2
  • 来自: 山西
社区版块
存档分类
最新评论

java实现文件下载

阅读更多

/**
    该类使用方法:
    在使用struts框架(或其他框架)时,如果从action转到该servlet,有一点要注意。就是在使action之前如果是用了filter,并且在filter调用了getWriter()方法,那么action跳转到该servlet时,必须是redirect形式,否则会出错。出错信息大致如下:
    java.lang.IllegalStateException: getWriter() has already been called for this re
    sponse。
    
    该类的两个假设:
    1。假使下载的文件名传送到该servlet的名字是“filename”。使用redirect到本servlet时,参数传送可以通过session;
    2。假使要下载的文件在目录“rootpath”下。
    
    **/
    public class DownloadFile extends HttpServlet {
    
     public String getValue(HttpServletRequest request, String name) {
     String value = null;
     value = request.getParameter(name);
     if (value != null)
     return value;
     value = (String) request.getAttribute(name);
     if (value != null)
     return value;
     value = (String) request.getSession().getAttribute(name);
     request.getSession().removeAttribute(name);
     return value;
     }
    
     public void doPost(HttpServletRequest request, HttpServletResponse response) {
     FileInputStream fis = null;
     ServletOutputStream fout = null;
     try {
     String filename = getValue(request, "filename");
     if (filename != null) {
     String oldcharset = request.getCharacterEncoding();
     String showFilename = null;
     if (oldcharset != null) {
     showFilename = new String(filename.getBytes(request
     .getCharacterEncoding()), "ISO_8859_1");
     } else {
     showFilename = new String(filename.getBytes(), "ISO_8859_1");
     }
     String rootpath = getValue(request, "rootpath");   if (rootpath == null) {
     rootpath = getServletContext().getRealPath("/");
     }
     String filepath = rootpath + filename;
     response.reset();
     response.setHeader("Pragma", "No-cache");
     response.setHeader("Cache-Control", "no-cache");
     response.setDateHeader("Expires", 0);
     response.setContentType("application/octet-stream;charset=GBK");
     response.setHeader("Content-disposition",
     "attachment;filename=\"" + showFilename + "\"");
     fis = new FileInputStream(filepath);
     fout = response.getOutputStream();
     int byteRead;
     while ((byteRead = fis.read()) != -1) {
     fout.write(byteRead);
     }
     }
     } catch (Exception e) {
     e.printStackTrace();
     } finally {
     if (fis != null) {
     try {
     fis.close();
     } catch (IOException e) {
     }
     }
     if (fout != null) {
     try {
     fout.close();
     } catch (IOException e) {
     }
     }
     }
     }
    
     public void doGet(HttpServletRequest request, HttpServletResponse response) {
     doPost(request, response);
     }
    } 
 

分享到:
评论

相关推荐

    Java实现文件下载功能

    ### Java实现文件下载功能 在IT领域,尤其是Web开发中,文件下载是常见的需求之一,例如用户可能需要从服务器下载各种类型的文件,如文档、图片、压缩包等。本文将详细解析如何使用Java来实现这一功能,特别是针对...

    JAVA实现文件下载的代码

    本篇文章将深入探讨如何使用Java实现文件下载,并基于提供的"JAVA实现文件下载的代码.txt"文件进行解析和解释。 首先,我们需要理解文件下载的基本流程。当用户在浏览器中点击一个下载链接时,请求会被发送到服务器...

    java实现文件下载,并弹出保存对话框(Excel)

    本文将深入探讨如何使用Java实现文件下载,并在客户端弹出保存对话框,特别聚焦于Excel文件的处理,这在企业级应用中尤为常见。 ### Java实现文件下载的关键步骤 1. **设置HTTP响应头**:为了触发浏览器的下载行为...

    ajax实现java文件下载

    在现代Web应用中,用户对交互性和...总结起来,Ajax实现Java文件下载是一种提高用户体验的有效手段,通过前后端的协同工作,实现了无刷新的文件下载功能。理解并掌握这一技术,对于提升Web应用的交互性具有重要意义。

    java实现文件下载的两种方式

    Java 实现文件下载的两种方式是指通过 Java 语言实现文件下载的两种方法,主要分为本地文件下载和网络文件下载两种方式。下面将对这两种方式进行详细的介绍。 本地文件下载 本地文件下载是指从本地文件系统中下载...

    java利用oss实现下载功能

    "java利用oss实现下载功能" Java是当前最流行的编程语言之一,而 OSS(Object Storage Service)是阿里云提供的一种对象存储服务,通过使用Java和OSS可以实现下载功能。本文将详细介绍如何使用Java和OSS实现下载...

    java使用itext实现pdf文件下载

    现在,我们转向主题,即如何在Java中实现PDF文件的下载。有两种主要的方式: 1. **通过系统路径下载**:这种方式适用于后台生成PDF后,直接保存到服务器的某个路径,然后提供URL给用户下载。以下是一个简单的示例:...

    java实现模板下载功能

    ### Java 实现模板下载功能详解 #### 一、概述 在Web应用开发中,模板下载功能是常见需求之一,尤其在报表系统、数据导出等场景下应用广泛。本篇文章将详细阐述如何利用Java技术栈实现一个简单的模板下载功能。 #...

    java 实现 word 文档的在线预览

    这项功能可以让用户无需下载原始文件就能查看文档内容,提高工作效率并减少服务器存储压力。本资源提供的代码和jar包正是为了解决这一问题。 首先,我们要理解Java实现Word在线预览的基本原理。这通常涉及到将Word...

    java代码实现文件上传和下载

    在java代码中实现文件的上传和下载,通过页面的file文件上传到java代码段,获取文件的大小和名字

    扫描二维码下载 JAVA实现20190403

    本文将深入探讨如何使用JAVA实现扫描二维码自动下载对应客户端类型的APP功能。 首先,我们需要理解二维码的基本原理。二维码(Quick Response Code)是一种二维条形码,存储的数据可以是网址、文字、图片、联系人...

    java实现pdf上传,下载,在线预览,删除,修改等功能

    这里我们将深入探讨这些功能的实现,并结合标签`java xpdf java实现pdf`来讨论XPDF库在Java中的应用。 1. **PDF上传**: PDF上传通常涉及用户通过Web界面或API接口提交PDF文件。Java中,可以使用Apache Commons ...

    JAVA实现的BT下载客户端

    本人用JAVA写的一个BT下载客户端 是本人的毕业设计 界面用SWT实现 后台引用了国外著名的Vuze开源软件的后台 能实现下载上传,种子的解析和生成 软件的功能不是很全 但是本人一手摸索着写成的东西 费了不少心思 是...

    java图形化实现文件上传_javagui上传文件,gui编写上传下载文件功能-Java文档类资源

    利用java图形化界面和网络编程相结合实现的--文件上传。 运行步骤: (1)分别运行工程两个包中的两个.java文件(UploadClient.java和UploadServer.java)分别会弹出“上传客服端”和“上传服务器”两个窗口。 ...

    Java实现FTP批量大文件上传下载.pdf

    Java实现FTP批量大文件上传下载 一、Java FTP客户端库的选择 在选择Java FTP客户端库时,需要考虑多个因素,例如性能、安全性、可靠性等。当前有多种FTP客户端库可供选择,例如J-FTP、SimpleFTP、FTPClient等。每...

    Java 利用多线程实现文件的分片下载

    大文件的快速下载,经测试在100M带宽的网络下,下载一个40M的文件,不超过两秒钟,当然还得根据自己电脑的配置来讲。 其他说明: 文件如果特别小,而自己网络又非常好的情况下,不建议使用线程池进行下载,因为...

    Java 实现的断点下载

    Java 断点下载技术是Java编程中用于网络文件下载的一种高效方法,特别是在处理大文件时,它允许用户中断和恢复下载过程。断点下载的基本原理是通过保存已下载部分的信息,如下载的总长度、已下载的字节数以及当前...

    迅雷下载接口java实现

    本话题将深入探讨如何使用Java实现迅雷下载接口,这是一项利用迅雷的动态链接库(DLL)和C++开放接口来提升下载效率和稳定性的技术实践。 首先,我们需要了解迅雷的C++开放接口。迅雷为了方便开发者集成其下载功能...

    java实现文件浏览器

    用JAVA语言实现的文件浏览器,类似于资源管理器的功能;

    Java版Linux文件上传下载、windows本地文件上传下载

    在Java编程环境中,实现Linux与Windows之间的文件上传和下载是一项常见的任务,特别是在分布式系统和跨平台应用中。本文将深入探讨如何使用Java技术实现在Linux和Windows之间进行文件的互传,以及创建一个HTML界面来...

Global site tag (gtag.js) - Google Analytics