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();
}
转:http://www.cnblogs.com/zyxzhsh/archive/2010/12/02/1894089.html
分享到:
相关推荐
在Java编程中,文件下载是常见的操作之一,无论是从本地文件系统还是网络上下载文件,都需要掌握一定的技巧和方法。本文将详细介绍几种常用的Java文件下载方式,包括本地文件下载、网络文件下载以及支持断点续传的...
Java文件下载的几种方式,是很方便的,找了半天找到了,共享一下
为了克服这一问题,开发人员通常会利用Ajax技术来实现异步文件下载,使得用户在下载文件的同时仍能保持页面的正常操作。本话题将详细探讨如何通过Ajax实现Java文件的下载,并介绍相关的核心概念和技术。 1. **Ajax*...
在Java开发中,文件和图片的上传下载是常见的功能需求,尤其在Web应用中更为重要。本篇文章将详细探讨三种不同的实现方式,分别是使用JSP+Servlet、SmartUpload库以及Apache的FileUpload组件。 首先,我们来看第一...
在Java编程中,文件下载是常见的需求,例如从服务器向客户端传输文件,或者在应用程序内部获取网络资源。本文将详细探讨Java实现...以上就是Java实现文件下载的几种常见方法,可以根据项目需求和环境选择合适的方式。
包是Java中的命名空间,组织类和接口的一种方式。API文档中,每个包都有详细的描述,如`java.io`包用于处理输入/输出操作,`java.net`包处理网络通信,`java.awt`和`javax.swing`包提供图形用户界面支持。了解包...
每个`DownloadThread`实例会负责下载文件的一部分。 `DownLoadThread.java`可能包含以下核心代码: 1. 初始化:构造函数接收开始和结束的偏移量,以及输入流和输出文件路径。 2. `run()`方法:在这个方法中,线程...
### Java下载文件到指定路径(不打开窗口) #### 概述 本文档主要介绍如何使用Java编程语言实现从网络上下载文件并将其保存至本地指定路径的功能,且在执行过程中不会弹出任何用户界面窗口。这种方法非常适合后台...
本教程将详细讲解如何使用Itext库实现PDF文件的下载,包括通过系统路径下载和通过浏览器下载两种方式。 首先,我们需要了解Itext的基本用法。Itext提供了一系列的API,可以方便地创建PDF文档的各个元素,如文本、...
其中,“Content-Disposition”用于指定文件的下载方式,通常设置为“attachment”表示附件下载。 3. **文件流操作**:在Java中,文件读写主要依赖于流操作。本例中使用了`BufferedInputStream`和`...
SFTP是SSH的一部分,是一种传输文件到服务器的安全方式,但是传输效率比普通的FTP要低。 在JAVA中,我们可以使用JSch库来实现SFTP的功能。JSch(Java Secure Channel)是一个SSH2的纯Java实现。它允许你连接到一个...
本文将深入探讨Java文件下载的实现方式以及如何解决中文乱码问题。 首先,我们需要理解HTTP协议中的Content-Disposition头的作用,它用于告知浏览器如何处理响应体的内容,比如作为附件下载。在Java中,我们通常...
Java下载功能的实现有多种方式,一般来说可以分为三种:第一种是将要下载的内容写到本地目录,然后将目录返回给前端,利用a标签下载;第二种是本地不允许访问,挂载目录,使目录可以对外访问,同样的,把目录返给...
JSch允许你连接到远程服务器,执行命令,包括上传和下载文件。以下是一个简单的文件上传示例: ```java import com.jcraft.jsch.*; public class SshFileTransfer { public static void upload(String host, int ...
### Java使用流下载文件知识点详解 #### 一、概述 在Web应用开发中,经常需要实现文件下载功能,比如用户可以下载系统中的报告、图片、文档等资源。使用Java流来处理文件下载是一种非常常见的技术手段。本文将详细...
1. **HTTP协议**:下载文件通常涉及到HTTP协议中的GET请求。服务器端提供文件,客户端通过发送GET请求来获取文件。理解HTTP协议的基本工作原理对实现文件下载至关重要。 2. **Servlet**:在Java Web开发中,Servlet...
6. **PPT展示**:在项目报告或演示中,可以生成一个PPT来展示整个流程,包括Java批量下载文件的逻辑、MinIO的存储功能介绍以及使用`ZipOutputStream`进行文件压缩的步骤。 通过以上步骤,可以实现Java环境下从MinIO...
下载文件的过程与上传类似,只是使用了`get()`方法。该方法会将服务器上的文件下载到本地。 ```java sftp.get(远程文件路径, 本地保存路径); ``` **删除Linux服务器文件** 删除文件可以使用`rm()`或`rmdir()`方法...
让我们设想这样一个情形--我们想写一个纯 Java 的从一个远程计算机上运行的 FTP 服务器上传下载文件的应用程序;我们还希望能够得到那些供下载的远程文件的基本文件信息,如文件名、数据或者文件大小等。尽管从头...