`

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();
    }

还有一种使用SmartUpload,见附件

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java文件下载的几种方式

    在Java编程中,文件下载是常见的操作之一,无论是从本地文件系统还是网络上下载文件,都需要掌握一定的技巧和方法。本文将详细介绍几种常用的Java文件下载方式,包括本地文件下载、网络文件下载以及支持断点续传的...

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

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

    ajax实现java文件下载

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

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

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

    java文件下载的常用方式

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

    java分段文件下载的实现与多线程下载最新版

    多线程下载是指同时启动多个下载线程,每个线程负责下载文件的一部分。这种方式可以充分利用多核CPU和网络资源,提高下载速度。在Java中,可以使用`ExecutorService`来管理这些线程。 **Java中的多线程下载实现**:...

    Java API文档.docx

    包是Java中的命名空间,组织类和接口的一种方式。API文档中,每个包都有详细的描述,如`java.io`包用于处理输入/输出操作,`java.net`包处理网络通信,`java.awt`和`javax.swing`包提供图形用户界面支持。了解包...

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

    SFTP是SSH的一部分,是一种传输文件到服务器的安全方式,但是传输效率比普通的FTP要低。 在JAVA中,我们可以使用JSch库来实现SFTP的功能。JSch(Java Secure Channel)是一个SSH2的纯Java实现。它允许你连接到一个...

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

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

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

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

    java使用itext实现pdf文件下载

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

    Java实现文件下载功能

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

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

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

    java利用oss实现下载功能

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

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

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

    java 使用流下载文件

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

    Java实现批量下载并压缩文件.pptx.pptx

    6. **PPT展示**:在项目报告或演示中,可以生成一个PPT来展示整个流程,包括Java批量下载文件的逻辑、MinIO的存储功能介绍以及使用`ZipOutputStream`进行文件压缩的步骤。 通过以上步骤,可以实现Java环境下从MinIO...

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

    让我们设想这样一个情形--我们想写一个纯 Java 的从一个远程计算机上运行的 FTP 服务器上传下载文件的应用程序;我们还希望能够得到那些供下载的远程文件的基本文件信息,如文件名、数据或者文件大小等。尽管从头...

    java实现文件下载的两种方式

    Java 实现文件下载的两种方式 Java 实现文件下载的两种方式是指通过 Java 语言实现文件下载的两种方法,主要分为本地文件下载和网络文件下载两种方式。下面将对这两种方式进行详细的介绍。 本地文件下载 本地文件...

Global site tag (gtag.js) - Google Analytics