`

上传和下载

    博客分类:
  • 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 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();
        }
    }

//支持在线打开文件的一种方式
Java代码
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();  
    } 
http://wujuncheng.iteye.com
分享到:
评论

相关推荐

    文件上传和下载文件上传和下载文件上传和下载

    文件上传和下载是Web应用程序中的核心功能之一,无论是用户向服务器提交个人资料、分享文档,还是从服务器获取资源,如软件更新、电子书籍等,都离不开这一操作。在这个过程中,前端与后端的交互以及数据的安全传输...

    上传和下载系统 上传和下载系统

    10. **日志记录**:跟踪和记录每一次上传下载活动,便于故障排查和审计。 在实现这些功能时,开发者通常会使用HTTP或FTP协议,有时也会用到WebDAV等更高级的协议。服务器端可能采用如Node.js、Python Flask、Java ...

    jsp文件的上传和下载

    在Java Web开发中,JSP(JavaServer Pages)常常用于创建动态网页,配合Servlet处理用户交互,例如文件的上传和下载。本项目专注于解决在JSP中实现文件上传和下载时遇到的一些常见问题,特别是针对中文文件名的处理...

    文件上传和下载的常见测试点

    文件上传和下载测试点总结 文件上传和下载是许多应用程序和网站的基本功能之一,在进行测试时需要考虑多个方面的测试点,以下是文件上传和下载的常见测试点: 下载测试点 1. 右键另存为是否可以正确下载文件,...

    西门子博图软件程序上传和下载SOP

    ### 西门子博图软件程序上传和下载标准操作流程(SOP) #### 一、程序备份 在进行任何程序上传或下载之前,确保对现有程序进行完整的备份是非常重要的步骤。这一步骤能够帮助用户避免因操作失误而导致的数据丢失。...

    jsp实现上传和下载

    在提供的压缩包文件中,"down"和"load"可能是两个关键的目录或文件,它们可能分别代表了下载和上传的实现代码或者示例。通常,一个Web项目会包含Web-INF目录,其中存放web.xml配置文件,定义Servlet和JSP的映射关系...

    C#实现的FTP文件上传和下载

    在本文中,我们将深入探讨如何使用C#编程语言来实现FTP(文件传输协议)客户端功能,包括文件的上传和下载。FTP是一种广泛用于在互联网上交换文件的标准协议,而C#提供了一个强大的类库——`System.Net....

    java文件上传和下载功能

    在Java编程领域,文件上传和下载是Web应用中常见的功能,尤其在用户交互丰富的网站或系统中。本项目通过一个简单的源码实例,演示了如何实现在JSP(JavaServer Pages)界面上处理文本和图片的上传与下载,涵盖了相关...

    文件的上传和下载

    在IT行业中,文件的上传和下载是Web应用中不可或缺的一部分,尤其在Java开发中,这一功能的实现至关重要。本文将详细讲解如何使用Java来实现文件的上传和下载操作。 首先,我们来了解一下文件上传的基本流程。文件...

    Qt5.8用FTP实现文件上传和下载(带进度条)

    在本文中,我们将深入探讨如何使用Qt5.8框架通过FTP协议实现文件的上传和下载功能,同时结合进度条来实时展示操作进度。Qt是一个功能强大的C++库,提供了丰富的图形用户界面(GUI)工具和网络通信接口,使得开发者...

    linux系统怎么用SecureCRT上传和下载文件?.docx

    使用 SecureCRT 上传和下载文件非常方便,只需要安装 rz 和 sz 命令,设置上传和下载的默认目录,然后使用 sz 和 rz 命令来上传和下载文件。同时,需要注意上传文件时的注意事项,以避免文件上传失败。

    Delphi上传和下载文件

    详细记录了整个Delphi上传和下载文件的整个过程,同时提供了源码,有兴趣的亲们可以试试

    java代码实现文件上传和下载

    在java代码中实现文件的上传和下载,通过页面的file文件上传到java代码段,获取文件的大小和名字

    struts2 文件的上传和下载

    在Struts2中,文件的上传和下载是常见的功能需求,特别是在处理用户表单提交、数据交换或者提供资源下载服务时。这篇博客文章将探讨如何在Struts2框架下实现文件的上传和下载操作。 首先,我们需要了解文件上传的...

    web上实现类似ftp客户端上传和下载

    FTP客户端通常具备登录服务器、浏览目录、上传、下载和管理文件等能力。在Web环境中,我们通常不会直接使用FTP协议,而是采用更安全的SFTP(Secure File Transfer Protocol)或FTPS(FTP over SSL/TLS)。 实现Web...

    SpringMVC框架实现文件的上传和下载

    在SpringMVC框架中,文件的上传和下载是常见的功能需求,主要用于处理用户的数据交互,例如用户上传图片、文档等,或者系统提供文件下载服务。本文将深入探讨如何使用SpringMVC来实现这一功能。 首先,我们需要理解...

    TFTP多线程上传和下载

    TFTP多线程上传和下载, 这是Part1. 还有Part2

    PHP文件上传和下载

    在PHP中,文件上传和下载是两个非常重要的功能,它们在Web开发中有着广泛的应用,例如用户上传头像、分享文件或下载资源等。本文将详细介绍如何使用PHP实现这两个功能。 首先,我们从文件上传开始。PHP提供了`$_...

    Servlet文件上传和下载

    JavaServlet文件上传和下载,java初学者笔记!

Global site tag (gtag.js) - Google Analytics