`
ganjp
  • 浏览: 71929 次
  • 性别: Icon_minigender_1
  • 来自: 其实还可以
社区版块
存档分类
最新评论

Java文件下载的集中方式

阅读更多

Java文件下载的几种方式

http://mblog.hjenglish.com/zhengxiang33/1518891.html

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中,我们可以使用`BufferedReader`和`PrintWriter`类来实现按行读取和写入文件。`...

    JAVA API官方文档中文版

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

    java下载程序 附代码

    【标题】"java下载程序 附代码"所涉及的知识点主要集中在Java编程语言以及网络下载技术上。Java是一种广泛使用的面向对象的编程语言,具有跨平台性、安全性、可移植性和高效性等特性,使得它成为开发下载程序的理想...

    java web开发文档集中营

    【标题】"java web开发文档集中营"涵盖了Java Web开发中的关键技术和API,这是一个非常全面的资源集合,旨在帮助开发者深入理解和应用Java在Web领域的技术。 【描述】"这是我最近花了很大的力气搜集来的希望可以帮...

    java api 中文文档

    Java API中文文档是Java开发人员的重要参考资料,它包含了Java平台标准版(Java SE)的所有类库和接口的详细说明。这份文档以中文呈现,旨在帮助中国开发者更好地理解和使用Java编程语言,克服语言障碍,提高开发...

    前台从java后台获取excel表格并下载

    本场景涉及的知识点主要集中在如何通过Java后台生成Excel表格,并将数据传递给前端进行下载。以下是对这些知识点的详细解析: 首先,标题"前台从java后台获取excel表格并下载"表明我们需要实现一个功能,即前端用户...

    .au格式Java音频下载

    2. **Java与音频处理**:Java提供了丰富的API来支持音频处理,主要集中在`javax.sound.sampled`包中。通过这个包,开发者可以实现音频的播放、录制、转换和混音等功能。 3. **在Java中加载.au文件**:要播放.au文件...

    java Mp3NC 源码下载

    Java MP3NC源码下载相关的知识点主要集中在Java编程语言、音频处理、以及可能涉及的开源项目和编程实践上。MP3NC可能是一个基于Java编写的MP3播放器或处理库,下面将对这些主题进行详细阐述。 1. Java编程语言: ...

    Java读取远程主机文件

    标题 "Java读取远程主机文件" 涉及的核心知识点主要集中在Java远程操作技术,特别是使用SSH(Secure Shell)协议来实现对远程主机的文件访问。在这个场景中,开发人员可能需要从远程服务器上下载文件或者实时读取...

    使用java上传MP4文件至mongodb数据库,并下载

    使用Java上传MP4文件至MongoDB数据库,并下载 本文将详细介绍如何使用Java上传MP4文件至MongoDB数据库,并...最后,我们可以使用Java工具类连接MongoDB副本集中GridFS,并上传MP4文件至MongoDB数据库,并下载文件。

    java操作CSV文件

    在Java中,处理CSV文件有多种方式,本篇文章将详细介绍如何利用`opencsv-2.3.jar`库来进行高效的数据读写操作。 #### 二、所需库与环境准备 - **opencsv**: 一个用于读写CSV文件的Java库,版本为2.3。 - **开发环境...

    Java 从txt文件查找数据

    Java提供了丰富的类库用于读写文件,主要集中在`java.io`包下。`File`类用于表示文件或目录路径,而`BufferedReader`或`Scanner`通常用于读取文本文件。例如,我们可以创建一个`BufferedReader`实例来逐行读取txt...

    JAVA配置文件编写说明文档

    本文档将深入探讨Java配置文件的编写规范和最佳实践,旨在帮助开发者更好地理解和创建有效的配置文件。 首先,Java配置文件通常以`.properties`或`.xml`格式存在。`.properties`文件是键值对的形式,适用于简单的...

    JAVAWEB批量文件下载器

    JavaWeb批量文件下载器是一种基于Java技术开发的Web应用程序,主要功能是允许用户批量地、有序地下载文件。这种工具通常适用于需要集中管理和分发大量文件的场景,比如教育机构的课件分享、企业的内部资料分发或者...

    java局域网文件传

    【Java局域网文件传输】涉及的技术点主要集中在Java的网络编程、图形用户界面(GUI)设计以及文件操作上。以下是对这些知识点的详细说明: 1. **Java网络编程**: - **Socket通信**:Java中的`java.net.Socket`类是...

    java8.docset.zip

    在这个文档集中,我们关注的是如何在Mac操作系统上使用Dash管理中文版的Java 8 API。Dash是一款强大的API文档浏览器和代码片段管理工具,对于开发人员来说,它提供了一种高效的方式来查找和学习各种库和框架的文档,...

    集中化管理java文档API1、无缝接入springboot2、支持集中式文档管理3、支持selfhost管理.zip

    标题中的“集中化管理java文档API1、无缝接入springboot2、支持集中式文档管理3、支持selfhost管理”指的是一个Java开发的API管理系统,它具备以下关键特性: 1. **集中化管理**:这个系统设计的目标是统一管理和...

    java开发相关api文档

    《JAVA_完完全全的中文版Java API_Sun公司官方出版.chm》是Java开发者的重要参考资料,它包含了Java开发所需的全面API文档。这份文档由Sun公司(现已被Oracle收购)官方发布,确保了内容的权威性和准确性。在本文中...

    hession实例代码(文件上传和下载)

    在“hession实例代码(文件上传和下载)”这个项目中,我们可以看到一个基于Hession实现的文件服务,该服务包含了文件的上传和下载功能。这通常涉及到以下几个关键知识点: 1. **Hession序列化与反序列化**:Hession...

Global site tag (gtag.js) - Google Analytics