`

请您先登录,才能继续操作

Java中几种常用的文件下载方式

    博客分类:
  • 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 static void  downloadNet(String urlStr,String fileName)  throws  MalformedURLException {
        //  下载网络文件
        int  bytesum  =   0 ;
        int  byteread  =   0 ;

       URL url  =   new  URL( urlStr );

        try  {
           URLConnection conn  =  url.openConnection();
           InputStream inStream  =  conn.getInputStream();
           FileOutputStream fs  =   new  FileOutputStream( "D:/"+fileName);

            byte [] buffer  =   new   byte [ 1204 ];
            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文件下载的几种方式.txt

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

    java文件下载的常用方式

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

    最常用的几种Java打包方式总结

    ### 最常用的几种Java打包方式总结 #### 一、引言 在Java开发过程中,将编写的程序打包成可执行文件是十分重要的一个环节。本文旨在详细介绍最常用的几种Java打包方式及其使用的工具,帮助开发者更加方便和轻松地...

    oracle连接java的几种方法

    本篇文章将详细介绍在Java中连接Oracle数据库的几种常见方法,以及相关的源码示例。 1. JDBC-ODBC桥连接: JDBC-ODBC桥是Java早期连接数据库的一种方式,它依赖于操作系统上的ODBC数据源。首先,你需要在系统中...

    java下载文件的种方式

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

    java dll文件调用的几种方式

    以上就是Java中调用DLL文件的几种常见方式及其注意事项。无论选择哪种方法,理解DLL的工作原理以及Java与原生代码交互的方式都是至关重要的。在实际项目中,应根据需求和项目规模来决定最合适的集成策略。

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

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

    Java IO流几种经典使用方式

    ### Java IO流几种经典使用方式 #### 一、输入输出流(Input/Output Stream) 在Java中,`java.io`包提供了处理输入/输出操作的基本类,主要包括`InputStream`和`OutputStream`。 ##### 1. 字节流(Byte Stream) **...

    Java API文档 中文网页版

    Java API文档是Java开发者的重要参考资料,它包含了Java开发工具包(JDK)中的所有类、接口、方法和常量的详细说明。这份中文网页版的Java API文档为中国的开发者提供了便利,无需通过英文版本来学习和查找API信息,...

    Java语言编程中更新XML文档的四种常用方法

    为了确保输出的XML文档格式符合预期,可以通过以下几种方式进行控制: 1. **设置输出编码**:在使用`TransformerFactory`创建`Transformer`时,可以设置输出的编码方式,例如UTF-8或GB2312。 2. **控制缩进格式**:...

    java常用几种加密算法

    ### Java常用几种加密算法 在Java开发中,数据的...以上就是关于Java中常用的几种加密算法——MD5、SHA及RSA的基本介绍和应用示例。通过理解这些加密算法的工作原理和应用场景,可以帮助开发者更好地保护数据安全。

    技术选型分享:JAVA中几种常用的RPC框架介绍.docx

    以下是几种常用的Java RPC框架的详细介绍: 1. RMI(Remote Method Invocation): RMI是Java自带的远程方法调用框架,它允许Java对象在不同JVM之间进行交互。RMI的核心包括接口定义、接口实现和客户端调用。...

    JAVA API官方文档中文版

    5. **枚举和注解**:Java 5引入了枚举和注解,这些在API文档中也有详尽的解释,如`java.lang.annotation`包下的注解类型,以及`java.lang.Enum`作为所有枚举类型的基类。 6. **附录**:通常包括一些补充信息,如...

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

    以下是几种常见的 Java FTP 客户端库的比较: 表 1: Java FTP 客户端库比较 | 库名称 | 作者 | 版本 | 特点 | | --- | --- | --- | --- | | J-ftp | | 1.50 | 支持 FTP、SFTP、FTPS、TFTP 等协议 | | simpleftp |...

    Java实现批量下载并压缩文件.pptx.pptx

    有两种常用的方式: - **HttpURLConnection**:这是Java标准库中的API,可以直接建立HTTP连接,设置请求头和参数,然后读取响应数据,将远程文件下载到本地。 - **Apache HttpClient**:这是一个功能更强大的第三...

    第12讲 Java有几种文件拷贝方式?哪一种最高效?1

    在实际应用中,选择哪种文件拷贝方式应根据项目需求和系统环境进行权衡。在考虑性能优化时,不仅要关注拷贝速度,还要考虑到内存管理、垃圾回收等方面的影响。理解这些技术细节有助于更好地设计和实现高效率的文件...

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

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

Global site tag (gtag.js) - Google Analytics