`
tzming1212
  • 浏览: 441 次
  • 性别: Icon_minigender_1
  • 来自: 南昌市
社区版块
存档分类
最新评论

java 文件下载

阅读更多
在页面上我们一般用超链接执行文件下载,如果是菜单方式,可以使用:
      window.location =url 或
      window.open(url,'_self')方式来调用,注意不能用ajax方式来调用,因为Ajax不能进行文件流的传输,无论哪个框架还是自己写都一样。
下载最好用流的方式,不要用文件路径的方式。
下面是文件下载的java后台的几种实现方式
参考自:http://www.cnblogs.com/ungshow/archive/2009/01/12/1374491.html

public HttpServletResponse download(String path, HttpServletResponse response) {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
        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 {
req.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
        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=" + URLEncoder.encode(f.getFileName(),"UTF-8"));
        }
        OutputStream out = response.getOutputStream();
        while ((len = br.read(buf)) > 0)
            out.write(buf, 0, len);
        br.close();
        out.close();
    }
分享到:
评论

相关推荐

    ajax实现java文件下载

    本话题将详细探讨如何通过Ajax实现Java文件的下载,并介绍相关的核心概念和技术。 1. **Ajax**(Asynchronous JavaScript and XML)是一种在不重新加载整个网页的情况下,能够更新部分网页的技术。它通过JavaScript...

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

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

    VUE + java 文件下载

    前端vue,后端java。 如果前端是其他语言,可自行转换。 实现在浏览器前端点击后的文件下载。 不是整个工程代码,只把涉及到下载用的前端的代码和后端的代码贴出来了,可以直接复制使用,有详细的步骤。 包含了前端...

    java文件下载的工具类

    文件下载的工具类java代码,设置编码格式,避免下载中文乱码

    java文件下载工具类

    java文件下载工具类

    JAVA文件下载(限速、进度条)

    进度条:78%[===================> ]97.7K/s, will be finished in 75.59s 限速、文件网络地址、文件本地路径,均可在代码里修改。

    java 文件下载实例

    用Java脚本本在jsp里面写的,采用流的形式下载文件,非常简单,只是实现了下载的功能,

    雪花算法工具类(java文件下载直接用)

    分布式全局唯一ID生成算法,

    Java API文档.docx

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

    java文件下载工具类,可以下载文件

    java文件下载工具类,可以下载文件

    java 文件下载类

    Java实现文件下载,支持好几种下载方法,解决了中文文件名乱码问题.

    Java文件管理系统源码.zip

    Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 Java文件管理系统源码 ...

    Java文件工具类

    Java文件工具类

    Java下载器的简单实现及实时进度和速度获取

    在Java编程领域,开发一个下载器是常见的任务,特别是对于处理大文件或网络资源时。本文将深入探讨如何实现一个简单的Java下载器,并且重点讲解如何实现下载的实时进度显示和速度计算。以下是对这个主题的详细阐述:...

    Java 利用多线程实现文件的分片下载

    大文件的快速下载,经测试在100M带宽的网络下,下载一个40M的文件,不超过两秒钟,当然还得根据自己电脑的配置来讲。 其他说明: 文件如果特别小,而自己网络又非常好的情况下,不建议使用线程池进行下载,因为...

    java文件下载源代码

    后台代码不用写了,在action中直接输入文件地址调用

    [Java参考文档].JDK_API_1_6_zh_CN.CHM百度网盘下载地址

    下载完成后,用户可以直接双击文件图标打开文档查看。大多数操作系统默认都配备了 CHM 文件阅读器,如 Windows 自带的 HTML Help Workshop 就可以用来打开和浏览 CHM 文件。 ### 4. 学习与实践 对于希望深入学习 ...

    java图形化实现文件上传_javagui上传文件,gui编写上传下载文件功能-Java文档类资源

    (1)分别运行工程两个包中的两个.java文件(UploadClient.java和UploadServer.java)分别会弹出“上传客服端”和“上传服务器”两个窗口。 (2)单击“上传服务器”窗口中的“启动服务..”按钮。 (3)单击“上传...

    java使用itext实现pdf文件下载

    在Java开发中,生成和处理PDF文档是一项常见的需求。Itext是一个强大的库,它允许开发者在Java环境中创建、编辑和修改PDF文档...通过实践和理解这些示例,你将能够熟练地在Java项目中运用Itext处理PDF文件的下载需求。

Global site tag (gtag.js) - Google Analytics