`
lishumingwm163.com
  • 浏览: 336767 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java 下载文件的方式

    博客分类:
  • java
阅读更多
java下载文件的种方式文章分类:Java编程

转自:http://www.cnblogs.com/ungshow/archive/2009/01/12/1374491.html





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文件下载方式,包括本地文件下载、网络文件下载以及支持断点续传的...

    ajax实现java文件下载

    为了克服这一问题,开发人员通常会利用Ajax技术来实现异步文件下载,使得用户在下载文件的同时仍能保持页面的正常操作。本话题将详细探讨如何通过Ajax实现Java文件的下载,并介绍相关的核心概念和技术。 1. **Ajax*...

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

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

    java文件下载的常用方式

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

    java下载文件到指定路径(不打开窗口)

    ### Java下载文件到指定路径(不打开窗口) #### 概述 本文档主要介绍如何使用Java编程语言实现从网络上下载文件并将其保存至本地指定路径的功能,且在执行过程中不会弹出任何用户界面窗口。这种方法非常适合后台...

    java下载文件的种方式

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

    Java API文档.docx

    Java API文档是Java开发者不可或缺的参考资料,它详细记录了Java编程语言的标准库,包括类、接口、方法和属性等核心元素。这些文档不仅提供技术规格,还包含使用示例,帮助程序员理解和应用Java的各类功能。 1. **...

    Java实现文件与图片的上传下载---三种方式

    在Java开发中,文件和图片的上传下载是常见的功能需求,尤其在Web应用中更为重要。本篇文章将详细探讨三种不同的实现方式,分别是使用JSP+Servlet、SmartUpload库以及Apache的FileUpload组件。 首先,我们来看第一...

    java下载文件案例

    总结一下,Java文件下载涉及的关键知识点包括:HTTP响应头的设置,文件I/O操作,Servlet编程,以及在Spring MVC框架下的实现方式。了解这些概念并能够灵活应用,将有助于你在开发中实现高效、可靠的文件下载功能。

    Java实现文件下载功能

    其中,“Content-Disposition”用于指定文件的下载方式,通常设置为“attachment”表示附件下载。 3. **文件流操作**:在Java中,文件读写主要依赖于流操作。本例中使用了`BufferedInputStream`和`...

    Java文件下载,Java文件下载中文乱码,Java通用文件下载

    本文将深入探讨Java文件下载的实现方式以及如何解决中文乱码问题。 首先,我们需要理解HTTP协议中的Content-Disposition头的作用,它用于告知浏览器如何处理响应体的内容,比如作为附件下载。在Java中,我们通常...

    Java版Linux文件上传下载、windows本地文件上传下载

    JSch允许你连接到远程服务器,执行命令,包括上传和下载文件。以下是一个简单的文件上传示例: ```java import com.jcraft.jsch.*; public class SshFileTransfer { public static void upload(String host, int ...

    JAVA SFTP文件上传、下载及批量下载实例

    在上面的示例代码中,我们创建了一个SFTPUtils类,其中包含了连接SFTP服务器、上传文件、下载文件等方法。这些方法使用JSch库来实现SFTP的功能。 在实际应用中,我们可以根据需要封装成一个util类,提供给其他应用...

    java使用itext实现pdf文件下载

    本教程将详细讲解如何使用Itext库实现PDF文件的下载,包括通过系统路径下载和通过浏览器下载两种方式。 首先,我们需要了解Itext的基本用法。Itext提供了一系列的API,可以方便地创建PDF文档的各个元素,如文本、...

    java多线程URL方式下载单个大文件

    每个`DownloadThread`实例会负责下载文件的一部分。 `DownLoadThread.java`可能包含以下核心代码: 1. 初始化:构造函数接收开始和结束的偏移量,以及输入流和输出文件路径。 2. `run()`方法:在这个方法中,线程...

    java利用oss实现下载功能

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

    Java作业文件下载功能

    1. **HTTP协议**:下载文件通常涉及到HTTP协议中的GET请求。服务器端提供文件,客户端通过发送GET请求来获取文件。理解HTTP协议的基本工作原理对实现文件下载至关重要。 2. **Servlet**:在Java Web开发中,Servlet...

    java 使用流下载文件

    ### Java使用流下载文件知识点详解 #### 一、概述 在Web应用开发中,经常需要实现文件下载功能,比如用户可以下载系统中的报告、图片、文档等资源。使用Java流来处理文件下载是一种非常常见的技术手段。本文将详细...

    JAVA本地文件下载

    在文件下载的过程中,我们通常会利用`HttpServletResponse`来设置响应头信息,如文件类型、编码方式等,以便浏览器能够正确地解析并下载文件。 ##### 2.2 FacesContext `FacesContext` 是JavaServer Faces (JSF) ...

    java实现文件下载

    Java Web开发中常用的框架之一是Struts2,它提供了简单而强大的方式来实现文件下载。 1. Struts2框架简介 Struts2是一个用于构建Java Web应用的强大框架。它基于MVC架构,将应用分为Model(模型层)、View(视图层...

Global site tag (gtag.js) - Google Analytics