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文件下载方式,包括本地文件下载、网络文件下载以及支持断点续传的下载方式。 #### 1. 本地文件下载 本地文件下载主要涉及到读取本地文件并将其发送到客户端的过程。以下代码示例展示...
Java Servlet API提供了几个关键接口和类,如`Servlet`, `GenericServlet`, `HttpServlet`。`Servlet`是所有Servlet的基类,`GenericServlet`实现了Servlet接口并提供通用的多线程服务方法,而`HttpServlet`是`...
这篇博客"java下载文件的种方式"可能详细介绍了几种不同的Java实现文件下载的方法。以下是对这些方法的总结和扩展: 1. **HTTP响应流下载** 这是最基本的方式,通过Servlet或Spring MVC等框架处理HTTP请求,然后在...
在Java Servlet中,处理文件上传和下载是常见的功能需求。在这个压缩包文件"TestFileUploadAndDownLoad"中,可能包含了实现这些功能的示例代码。 文件上传: 在Java Servlet中,我们通常使用`HttpServletRequest`...
Servlet文件下载主要涉及以下几个关键步骤: 1. **确定文件路径**:首先需要获取到要下载文件的实际路径。 2. **设置响应头**:为了指示浏览器以下载的方式打开文件,需要设置`Content-Disposition`响应头。 3. **...
- JSP(JavaServer Pages)是动态生成HTML的另一种方式,与Servlet结合使用,实现MVC(Model-View-Controller)架构。 - JSP可以包含Java脚本元素,如脚本片段、表达式、指令,也可以使用EL(Expression Language...
在"Java Servlet Programming9"这个主题中,我们可以深入探讨以下几个核心知识点: 1. **Servlet基础**:Servlet是Java平台上的一个标准API,定义了服务器端组件与HTTP协议交互的接口。`javax.servlet`和`javax....
8. **JSP与Servlet协同工作**:Java Server Pages(JSP)是Servlet的一种简化视图层表示的方式,它可以与Servlet一起工作,实现MVC(Model-View-Controller)设计模式。Servlet处理业务逻辑,JSP负责渲染视图。 9. ...
Java Servlet是Java Web开发中的核心组件之一,它主要用于构建动态Web应用程序。Servlet是Java平台上的一个标准接口,由Sun Microsystems(现在是Oracle)定义,允许开发者编写能够接收和响应HTTP请求的服务端程序。...
Servlet是Java Web开发中用于处理HTTP请求的一种技术,它提供了服务器端编程的能力,可以处理用户的数据交互,如文件上传、下载以及图片处理等任务。在这个项目中,我们重点关注的是Servlet如何实现文件上传、下载和...
"用Jsp实现文件下载功能的几种方式" 本文将介绍用Jsp实现文件下载功能的几种方式。这些方式都可以实现文件下载的功能,但每种方式都有其特点和缺点。 方式一:直接提供文件地址 这种方式是最直接最简单的,即把...
首先,让我们了解一下Java生成Excel的几种常见库: 1. **JXL库**:压缩包中的`jxl.jar`文件就是JXL库,这是一个广泛使用的Java库,用于读写Excel文件。JXL支持多种Excel操作,如创建工作簿、添加工作表、设置单元格...
以下是Servlet调用的四种常见方式的详细说明: 1. **通过URL调用** 这是最基础的调用方式,用户在浏览器地址栏输入与Servlet映射的URL,如`http://localhost:8080/myservlet/hello`。服务器接收到请求后,根据`web...
首先,Java Servlet是一种Java语言编写的服务器端程序,主要用于扩展服务器的功能。在博客系统中,Servlet主要负责处理HTTP请求,如用户登录、发表文章、评论等操作。Servlet通过继承HttpServlet类并重写doGet和...
在处理大型文件下载时,主要考虑以下几个关键点: 1. 流式传输:由于文件较大,一次性加载到内存中不切实际,因此需要使用流式传输,分块读取和发送文件内容。 2. 断点续传:为了提高用户体验,支持用户中断后继续...
Java Servlet 是一种用于扩展Web服务器功能的技术,它允许开发者创建动态、交互式的Web应用程序。Servlet API 是由JavaSoft(现在是Oracle公司的一部分)定义的一组接口和类,它为处理HTTP请求提供了标准的方法。这...
JavaServlet也提供了多种方式来实现文件下载,以下将介绍一种常见的实现方法。 文件下载的流程 文件下载的流程可以分为以下几个步骤: 1. 客户端请求下载文件 2. 服务器端将文件发送回客户端 客户端请求下载文件...
2项目为实现文件上传的三种方式的源码,详细说明见我的博客。 jsp_upload-servlet项目:(1).Jsp/servlet 实现文件上传 (2).模拟Post请求/servlet 实现文件上传 jetty_upload-springmvc项目:(3).模拟Post请求/...
在Java Web开发中,Servlet是一种常用的服务器端编程接口,用于扩展Web服务器的功能。在这个"java+Servlet图片上传下载"的项目中,我们将深入探讨如何利用Java Servlet实现图片的上传和下载功能,这对于构建动态网站...
2. **GenericServlet**:这是一个抽象类,实现了Servlet接口,提供了一种通用的Servlet实现方式。它处理HTTP之外的其他协议,但通常我们只关注HTTP相关的Servlet。 3. **HttpServlet**:HttpServlet是...