`
nieli
  • 浏览: 83764 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 文件下载的多种方式

    博客分类:
  • java
阅读更多

关键字:java 文件下载 
      在页面上我们一般用超链接执行文件下载,如果是菜单方式,可以使用:

      window.location =url 或
      window.open(url,'_self')方式来调用,注意不能用ajax方式来调用,因为Ajax不能进行文件流的传输,无论哪个框架还是自己写都一样。

下面是文件下载的java后台的几种实现方式

参考自:http://www.cnblogs.com/ungshow/archive/2009/01/12/1374491.html
1.一般下载    

 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-Disposition",
       "attachment;filename=" + new String("中文名".getBytes(),"iso8859-1")
         + ".dat");
            response.addHeader(
"Content-Length""" + file.length());
            OutputStream toClient 
= new BufferedOutputStream(response.getOutputStream());
            response.setContentType(
"application/octet-stream");

            //response.setContentType("application/excel");excel文件下载
            toClient.write(buffer);
            toClient.flush();
            toClient.close();

 

            //xml文件下载

/*OutputStream out = response.getOutputStream();

           //OutputStream out = new BufferedOutputStream(response.getOutputStream());

           response.setContentType("text/xml");

          

           OutputFormat format = OutputFormat.createPrettyPrint();

           format.setEncoding("UTF-8");

           XMLWriter writer = new XMLWriter(out, format);

           writer.write(doc);

           writer.close();

           out.close();*/


        } 

 

 

 

catch (IOException ex) {
            ex.printStackTrace();
        }
        
return null;

 

 

  2. 下载本地文件
        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();
        }
3.下载网络文件
        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();
        }
4.支持在线打开文件的一种方式

 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 jdk1.8 下载

    此外,安装完成后,开发者还需要熟悉JDK的工具集,如编译器(javac)、运行环境(java)、文档生成工具(javadoc)和打包工具(jar)等,这些都是进行Java开发过程中不可或缺的工具。 Java JDK 1.8支持的编程语言...

    java利用oss实现下载功能

    Java下载功能的实现有多种方式,一般来说可以分为三种:第一种是将要下载的内容写到本地目录,然后将目录返回给前端,利用a标签下载;第二种是本地不允许访问,挂载目录,使目录可以对外访问,同样的,把目录返给...

    基于Java文件输入输出流实现文件上传下载功能

    基于Java文件输入输出流实现文件上传下载功能 本文将详细介绍基于Java文件输入输出流实现文件上传下载功能的相关知识点,包括文件上传和下载的实现原理、Java文件输入输出流的基础操作、Servlet的使用等。 文件...

    java批量下载文件

    ### Java批量下载文件并压缩为ZIP的技术解析 #### 核心知识点:批量文件下载与ZIP压缩 在现代软件开发中,文件操作是一项基本且重要的功能。对于需要处理大量文件的应用程序来说,批量下载文件并将其压缩成一个ZIP...

    java为多种文档(word ppt pdf excel)添加文本水印

    Free Spire.Office for Java是一套全面的文档处理库,它支持创建、读取、编辑和转换多种办公文档格式。在这个场景中,我们主要利用它的Word、PPT和PDF处理功能来添加文本水印。 2. **添加Word文本水印** 使用Free...

    java多种方式实现pdf文件电子签名

    Java作为广泛应用的编程语言,提供了多种库来实现PDF的电子签名功能。在这个项目中,我们主要探讨了利用iTextPDF和PDFBox两个库在Java环境下如何进行PDF电子签名的实现。 iTextPDF是一个流行的Java库,专门用于创建...

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

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

    java上传,下载组件

    总的来说,"java上传,下载组件"是为了简化Java Web应用中的文件交互操作,通过提供高效、安全、易用的工具,使得开发者能够专注于业务逻辑,而不是底层实现。这个组件的实现可能包含了上述提到的多种技术和最佳实践...

    基于java的book118文档下载器.zip

    总之,"基于Java的book118文档下载器"是一个综合运用了网络请求、HTML解析、文件操作等多种Java技术的实用工具,其具体实现会涉及到网络编程、数据解析、文件I/O等多个计算机科学和技术领域。对于学习Java编程和网络...

    java chm 帮助文档下载地址以及一些好的网址

    以下是一些获取Java CHM帮助文档的下载地址以及相关的学习资源: 1. **Oracle官方Java文档**:Oracle官方网站提供了完整的Java SE(标准版)和Java EE(企业版)的官方文档,包括JDK API文档。虽然不是CHM格式,但...

    java 17下载,版本 17.0.5, windows各版本

    - JDK(Java Development Kit)是Java开发的核心工具集,包含了JRE(Java Runtime Environment)和开发工具,如Javac编译器、Javadoc文档生成器等。 - JDK 17提供了对Java语言、类库、JVM(Java虚拟机)和工具的...

    文件上传下载需要的jar包 java文件上传下载

    在Java开发中,文件上传和下载是常见的...综上所述,实现Java中的文件上传下载功能,需要结合多种技术和库,同时考虑安全性、性能和用户体验等因素。开发者应当熟练掌握相关知识点,以构建稳定且高效的文件操作功能。

    JAVA API官方文档中文版

    `打开方式.htm`可能是关于如何阅读和利用这个CHM文档的指南,而`.url`文件则可能是一个链接,指向其他相关的学习资源,如“爱书吧-2万本图书免费下载”,可能提供了更多的学习资料。 总之,这份中文版的Java API...

    Java帮助文档.pdf

    Java开发工具包(JDK)提供了多种命令,如"Java"、"Javac"、"Javadoc"、"appletviewer"等,在Java帮助文档中也对此进行了详细的介绍。Java帮助文档是以HTML文件的形式组织,用浏览器就可以进行查阅。 程序员可以...

    java 19下载,版本 19.0.1, macos各版本

    - 在macOS上安装Java 19.0.1,首先需要下载对应版本的.dmg文件,双击打开后,会看到一个Java图标,将其拖拽到"Applications"文件夹完成安装。 - 安装完成后,为了在命令行中使用Java,需要配置`JAVA_HOME`环境变量...

    java生成rtf文档,跟word文档差不多

    RTF(Rich Text Format)是一种通用格式,可以被多种文字处理程序如Microsoft Word支持,使得文件在不同平台间具有良好的兼容性。本篇文章将深入探讨如何在Java中生成RTF文档,并与Word文档进行比较。 首先,Java...

    java jdk下载安装文件

    Java JDK 下载安装指南 Java 开发环境的配置是每个 Java 开发者的必备技能,下面将详细介绍 Java ...JDK 的下载和安装是 Java 开发环境的基础,而正确的安装方式和卸载方式可以确保 Java 应用程序的正确运行和稳定性。

    java远程传输文件

    Java远程传输文件 Java是一种跨平台的语言,在实际开发中,经常需要传输文件,该代码是一个很好的传输文件的例子。...该代码实现了Java远程传输文件的功能,使用了多种技术和方法来实现文件的下载和上传。

    java文件上传和下载案例

    总之,Java提供了多种方法处理文件上传和下载,开发者可以根据项目需求选择合适的方式。无论使用Servlet API还是第三方库,都需要确保文件操作的安全性,如防止路径遍历攻击、文件覆盖等问题。同时,优化文件读写...

Global site tag (gtag.js) - Google Analytics