`
akhuting
  • 浏览: 121152 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JAVA Servlet文件下载的几种方式

    博客分类:
  • java
阅读更多
  public  HttpServletResponse download(String path, HttpServletResponse response) {
         try  {
             //  path是指欲下载的文件的路径。 
            File file  =   new  File(path);
             //  取得文件名。 
            String filename  =  file.getName();
             //  取得文件的后缀名。 
            String ext  =  filename.substring(filename.lastIndexOf( " . " )  +   1 ).toUpperCase();

             //  以流的形式下载文件。 
            InputStream fis  =   new  BufferedInputStream( new  FileInputStream(path));
             byte [] buffer  =   new   byte [fis.available()];
            fis.read(buffer);
            fis.close();
             //  清空response 
            response.reset();
             //  设置response的Header 
            response.addHeader( " Content-Disposition " ,  " attachment;filename= "   +   new  String(filename.getBytes()));
            response.addHeader( " Content-Length " ,  ""   +  file.length());
            OutputStream toClient  =   new  BufferedOutputStream(response.getOutputStream());
            response.setContentType( " application/octet-stream " );
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        }  catch  (IOException ex) {
            ex.printStackTrace();
        }
         return  response;
    }

     public   void  downloadLocal(HttpServletResponse response)  throws  FileNotFoundException {
         //  下载本地文件 
        String fileName  =   " Operator.doc " .toString();  //  文件的默认保存名
         //  读到流中 
        InputStream inStream  =   new  FileInputStream( " c:/Operator.doc " ); //  文件的存放路径
         //  设置输出的格式 
        response.reset();
        response.setContentType( " bin " );
        response.addHeader( " Content-Disposition " ,  " attachment; filename=\ ""  + fileName +  " \ "" );
         //  循环取出流中的数 据 
         byte [] b  =   new   byte [ 100 ];
         int  len;
         try  {
             while  ((len  =  inStream.read(b))  >   0 )
                response.getOutputStream().write(b,  0 , len);
            inStream.close();
        }  catch  (IOException e) {
            e.printStackTrace();
        }
    }

     public   void  downloadNet(HttpServletResponse response)  throws  MalformedURLException {
         //  下载网络文件 
         int  bytesum  =   0 ;
         int  byteread  =   0 ;

        URL url  =   new  URL( " windine.blogdriver.com/logo.gif " );

         try  {
            URLConnection conn  =  url.openConnection();
            InputStream inStream  =  conn.getInputStream();
            FileOutputStream fs  =   new  FileOutputStream( " c:/abc.gif " );

             byte [] buffer  =   new   byte [ 1204 ];
             int  length;
             while  ((byteread  =  inStream.read(buffer))  !=   - 1 ) {
                bytesum  +=  byteread;
                System.out.println(bytesum);
                fs.write(buffer,  0 , byteread);
            }
        }  catch  (FileNotFoundException e) {
            e.printStackTrace();
        }  catch  (IOException e) {
            e.printStackTrace();
        }
    }

//支持在线打开文件的一种方式
     public   void  downLoad(String filePath, HttpServletResponse response,  boolean  isOnLine)  throws  Exception {
        File f  =   new  File(filePath);
         if  ( ! f.exists()) {
            response.sendError( 404 ,  " File not found! " );
             return ;
        }
        BufferedInputStream br  =   new  BufferedInputStream( new  FileInputStream(f));
         byte [] buf  =   new   byte [ 1024 ];
         int  len  =   0 ;

        response.reset();  //  非常重要 
         if  (isOnLine) {  //  在线打开方式 
            URL u  =   new  URL( " file:/// "   +  filePath);
            response.setContentType(u.openConnection().getContentType());
            response.setHeader( " Content-Disposition " ,  " inline; filename= "   +  f.getName());
             //  文件名应该编码成UTF-8 
        }  else  {  //  纯下载方式 
            response.setContentType( " application/x-msdownload " );
            response.setHeader( " Content-Disposition " ,  " attachment; filename= "   +  f.getName());
        }
        OutputStream out  =  response.getOutputStream();
         while  ((len  =  br.read(buf))  >   0 )
            out.write(buf,  0 , len);
        br.close();
        out.close();
    }
分享到:
评论

相关推荐

    Java文件下载的几种方式

    本文将详细介绍几种常用的Java文件下载方式,包括本地文件下载、网络文件下载以及支持断点续传的下载方式。 #### 1. 本地文件下载 本地文件下载主要涉及到读取本地文件并将其发送到客户端的过程。以下代码示例展示...

    JAVA servlet 编程指南

    Java Servlet API提供了几个关键接口和类,如`Servlet`, `GenericServlet`, `HttpServlet`。`Servlet`是所有Servlet的基类,`GenericServlet`实现了Servlet接口并提供通用的多线程服务方法,而`HttpServlet`是`...

    java下载文件的种方式

    这篇博客"java下载文件的种方式"可能详细介绍了几种不同的Java实现文件下载的方法。以下是对这些方法的总结和扩展: 1. **HTTP响应流下载** 这是最基本的方式,通过Servlet或Spring MVC等框架处理HTTP请求,然后在...

    java servlet上传下载

    在Java Servlet中,处理文件上传和下载是常见的功能需求。在这个压缩包文件"TestFileUploadAndDownLoad"中,可能包含了实现这些功能的示例代码。 文件上传: 在Java Servlet中,我们通常使用`HttpServletRequest`...

    Servlet文件下载

    Servlet文件下载主要涉及以下几个关键步骤: 1. **确定文件路径**:首先需要获取到要下载文件的实际路径。 2. **设置响应头**:为了指示浏览器以下载的方式打开文件,需要设置`Content-Disposition`响应头。 3. **...

    java+servlet源码

    - JSP(JavaServer Pages)是动态生成HTML的另一种方式,与Servlet结合使用,实现MVC(Model-View-Controller)架构。 - JSP可以包含Java脚本元素,如脚本片段、表达式、指令,也可以使用EL(Expression Language...

    Java Servlet Programming9

    在"Java Servlet Programming9"这个主题中,我们可以深入探讨以下几个核心知识点: 1. **Servlet基础**:Servlet是Java平台上的一个标准API,定义了服务器端组件与HTTP协议交互的接口。`javax.servlet`和`javax....

    深入Java Servlet 网络编程

    8. **JSP与Servlet协同工作**:Java Server Pages(JSP)是Servlet的一种简化视图层表示的方式,它可以与Servlet一起工作,实现MVC(Model-View-Controller)设计模式。Servlet处理业务逻辑,JSP负责渲染视图。 9. ...

    深入Java Servlet网络编程

    Java Servlet是Java Web开发中的核心组件之一,它主要用于构建动态Web应用程序。Servlet是Java平台上的一个标准接口,由Sun Microsystems(现在是Oracle)定义,允许开发者编写能够接收和响应HTTP请求的服务端程序。...

    Servlet文件上传、下载及缩略图的生成

    Servlet是Java Web开发中用于处理HTTP请求的一种技术,它提供了服务器端编程的能力,可以处理用户的数据交互,如文件上传、下载以及图片处理等任务。在这个项目中,我们重点关注的是Servlet如何实现文件上传、下载和...

    用Jsp来实现文件下载功能的几种方式

    "用Jsp实现文件下载功能的几种方式" 本文将介绍用Jsp实现文件下载功能的几种方式。这些方式都可以实现文件下载的功能,但每种方式都有其特点和缺点。 方式一:直接提供文件地址 这种方式是最直接最简单的,即把...

    java生成Excel及jar包和文件下载的几种方式

    首先,让我们了解一下Java生成Excel的几种常见库: 1. **JXL库**:压缩包中的`jxl.jar`文件就是JXL库,这是一个广泛使用的Java库,用于读写Excel文件。JXL支持多种Excel操作,如创建工作簿、添加工作表、设置单元格...

    servlet调用的几种方式

    以下是Servlet调用的四种常见方式的详细说明: 1. **通过URL调用** 这是最基础的调用方式,用户在浏览器地址栏输入与Servlet映射的URL,如`http://localhost:8080/myservlet/hello`。服务器接收到请求后,根据`web...

    java servlet jsp技术实现博客功能

    首先,Java Servlet是一种Java语言编写的服务器端程序,主要用于扩展服务器的功能。在博客系统中,Servlet主要负责处理HTTP请求,如用户登录、发表文章、评论等操作。Servlet通过继承HttpServlet类并重写doGet和...

    jsp+servlet实现大型文件下载

    在处理大型文件下载时,主要考虑以下几个关键点: 1. 流式传输:由于文件较大,一次性加载到内存中不切实际,因此需要使用流式传输,分块读取和发送文件内容。 2. 断点续传:为了提高用户体验,支持用户中断后继续...

    java servlet帮助文档

    Java Servlet 是一种用于扩展Web服务器功能的技术,它允许开发者创建动态、交互式的Web应用程序。Servlet API 是由JavaSoft(现在是Oracle公司的一部分)定义的一组接口和类,它为处理HTTP请求提供了标准的方法。这...

    JavaServlet的文件上传和下载实现方法

    JavaServlet也提供了多种方式来实现文件下载,以下将介绍一种常见的实现方法。 文件下载的流程 文件下载的流程可以分为以下几个步骤: 1. 客户端请求下载文件 2. 服务器端将文件发送回客户端 客户端请求下载文件...

    文件上传的三种方式-Java

    2项目为实现文件上传的三种方式的源码,详细说明见我的博客。 jsp_upload-servlet项目:(1).Jsp/servlet 实现文件上传 (2).模拟Post请求/servlet 实现文件上传 jetty_upload-springmvc项目:(3).模拟Post请求/...

    java+Servlet图片上传下载

    在Java Web开发中,Servlet是一种常用的服务器端编程接口,用于扩展Web服务器的功能。在这个"java+Servlet图片上传下载"的项目中,我们将深入探讨如何利用Java Servlet实现图片的上传和下载功能,这对于构建动态网站...

    Java Servlet Api .chm

    2. **GenericServlet**:这是一个抽象类,实现了Servlet接口,提供了一种通用的Servlet实现方式。它处理HTTP之外的其他协议,但通常我们只关注HTTP相关的Servlet。 3. **HttpServlet**:HttpServlet是...

Global site tag (gtag.js) - Google Analytics