`
alvinqq
  • 浏览: 185405 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

文件下载的几种方式

    博客分类:
  • 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文件下载的几种方式详解 在Java编程中,文件下载是常见的操作之一,无论是从本地文件系统还是网络上下载文件,都需要掌握一定的技巧和方法。本文将详细介绍几种常用的Java文件下载方式,包括本地文件下载、...

    Java文件下载的几种方式.txt

    Java文件下载的几种方式,是很方便的,找了半天找到了,共享一下

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

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

    JSP文件下载的几种方式

    JSP 文件下载的几种方式 JSP 文件下载是 Web 应用程序中的一种常见需求,通常有多种方式来实现文件下载。本文将介绍三种常见的 JSP 文件下载方式,并对每种方式的优缺点进行了分析。 方式一:直接链接下载 这种...

    下载文件的几种方式

    本文将详细介绍几种常见的下载文件方式。 1. **直接点击下载** 这是最基本的下载方式,通常在网页上,我们点击一个链接或按钮,浏览器会自动开始下载文件。例如,`xiazai.aspx`可能是一个网页,用户可以直接点击...

    西门子自动化系统WinAC RTX的的几种组态下载方式.pdf

    本文档旨在介绍WinAC RTX组态下载的几种方式,帮助自动化工程师更好地进行系统配置和程序部署。 首先,需要理解WinAC RTX与传统PLC(如S7-300)的区别。传统PLC是基于专有硬件平台的,而WinAC RTX则安装在通用的...

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

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

    WebService调用的几种方式

    使用Axis调用WebService时,你需要先下载Axis的二进制包,然后通过WSDL(Web服务描述语言)文件生成客户端存根类。这些存根类提供了与服务交互的方法,使得开发者可以像调用本地方法一样调用远程服务。 2. CXF:...

    FPGA几种下载方式.pdf

    下载电缆是FPGA下载方式中的一种重要组件,Altera下的下载电缆分为byteblaster和byteblasterII两种,.pof文件可以通过AS方式下载(保证byteblasterII/usb blaster连接正确);.sof文件或者转换的.jic可以通过JTAG...

    java下载文件的种方式

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

    文件写入,几种方式.docx

    Java 中的文件写入方式 在 Java 中,文件写入是一种常见的操作,用于将数据写入到文件中。在本文中,我们将介绍三种常见的文件写入方式,即使用 ...每种方式都有其优缺,需要根据实际情况选择合适的写入方式。

    基于c#的webapi断点续传几种方式及webclient断点续传下载.zip

    本资料包“基于C#的WebAPI断点续传几种方式及WebClient断点续传下载.zip”主要探讨了两种在C#环境下实现断点续传的方法:一是通过WebAPI实现服务端的断点续传功能,二是使用WebClient类进行客户端的断点续传下载。...

    几种简单常用的加密方式

    本文将详细探讨几种简单但常用的加密方式,以及如何实现这些加密方法。 首先,我们来看MD5(Message-Digest Algorithm 5)哈希加密。MD5是一种广泛使用的哈希函数,它能够将任意长度的输入(也叫做预映射pre-image...

    java文件下载的常用方式

    在Java编程中,文件下载是常见的需求,例如从服务器向客户端传输文件,或者在应用程序内部获取网络资源。本文将详细探讨Java实现...以上就是Java实现文件下载的几种常见方法,可以根据项目需求和环境选择合适的方式。

    android中几种for循环的效率

    在网上看了一些for循环的效率问题,发现基本上都是一些理论的东西,且大多都是Copy来的,前后文自相矛盾。自己做了一个例子,来看看他们的效率 1.最慢 private long getTime1() { long time = 0;...

    文件下载FTP,Http方式

    在给定的压缩包文件中,我们看到几个可能与文件下载和更新相关的文件: 1. AutoUpdate.cfg - 这可能是配置文件,包含了自动更新的设置,如FTP或HTTP服务器的URL,文件列表,更新策略等。 2. fMain.dcu, NetUnit.dcu...

    Java 从网上下载文件的几种方式实例代码详解

    Java 从网上下载文件的几种方式实例代码详解 本文将介绍 Java 中从网上下载文件的几种方式,通过实例代码详解,讲解了使用传统 IO 流、Apache Commons IO 库和 NIO 库等方法下载文件的详细过程。 知识点一:使用...

    下载文件管理demo

    本示例可能使用了其中的一种,这些库可以方便地发起HTTP请求并接收响应,从而实现文件的下载。 2. **文件存储**:Android提供了多种存储方式,如内部存储、外部存储(SD卡)以及自定义私有目录。下载的文件需保存到...

    android 数据存储的几种方式

    每种方式都有其适用的场景和特点。以下将详细介绍这几种存储方式,并针对Android平台的特定实现进行讨论。 1. SharedPreferences SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储简单的...

Global site tag (gtag.js) - Google Analytics