1.使用HttpServletResponse实现
Servlet代码:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//创建要下载的文件的对象(参数为要下载的文件在服务器上的路径)
File serverFile=new File("D:/myText.doc");
//设置要显示在保存窗口的文件名,如果文件名中有中文的话,则要设置字符集,否则会出现乱码。另外,要写上文件后缀名
String fileName=java.net.URLEncoder.encode("Java编程思想最新版.doc","utf-8");
//该步是最关键的一步,使用setHeader()方法弹出"是否要保存"的对话框,打引号的部分都是固定的值,不要改变
response.setHeader("Content-disposition","attachment;filename="+fileName);
/*
* 以下四行代码经测试似乎可有可无,可能是我测试的文件太小或者其他什么原因。。。
*/
response.setContentType("application/msword");
//定义下载文件的长度 /字节
long fileLength=serverFile.length();
//把长整形的文件长度转换为字符串
String length=String.valueOf(fileLength);
//设置文件长度(如果是Post请求,则这步不可少)
response.setHeader("content_Length",length);
/*
*以上内容仅是下载一个空文件
*以下内容用于将服务器中相应的文件内容以流的形式写入到该空文件中
*/
//获得一个 ServletOutputStream(向客户端发送二进制数据的输出流)对象
OutputStream servletOutPutStream=response.getOutputStream();
//获得一个从服务器上的文件myFile中获得输入字节的输入流对象
FileInputStream fileInputStream=new FileInputStream(serverFile);
byte bytes[]=new byte[1024];//设置缓冲区为1024个字节,即1KB
int len=0;
//读取数据。返回值为读入缓冲区的字节总数,如果到达文件末尾,则返回-1
while((len=fileInputStream.read(bytes))!=-1)
{
//将指定 byte数组中从下标 0 开始的 len个字节写入此文件输出流,(即读了多少就写入多少)
servletOutPutStream.write(bytes,0,len);
}
servletOutPutStream.close();
fileInputStream.close();
}
注1:setContentType(String type)方法里的参数type是指一个用于指定文件内容的
MIME类型
常见的MIME类型及含义:
text/html 超文本标记语言文本(.html)
text/plain 普通文本(.txt)
image/gif GIF图形(.gif)
image/jpeg JPEG图形(.jpeg或.jpg)
video/x-msvideo AVI文件(.avi)
application/zip zip压缩包(.zip)
application/msword word文档(.doc)
application/vnd.ms-excel excel文档(.xls)
audio/x-mpeg mp3音乐文件(.mp3)
jsp代码:
<body>
<center>
<form action="DownLoadServlet" method="post">
<a href="javascript:document.forms[0].submit()">单击下载</a>
</form>
</center>
</body>
分享到:
相关推荐
张孝祥的"Java邮件开发详解"教程无疑是学习这一主题的宝贵资源。本教程可能包含了从邮件协议理解到实际JavaMail API使用的全方位讲解。 Java邮件开发主要涉及以下几个关键知识点: 1. **邮件协议**:首先,你需要...
本教程“张孝祥Java邮件开发详解”深入探讨了如何使用Java来实现邮件的发送功能,涵盖了从基础概念到高级特性的全方位讲解。 首先,Java Mail API是Java中用于处理邮件的核心库,它提供了丰富的类和接口,使得...
在这个压缩包中,包含了一个名为"Java2编程详解.pdf"的PDF文件,这很可能是书籍的扫描版,允许用户免积分下载阅读。 Java2,也被称为Java 2平台标准版(J2SE),是Java开发的一个关键版本,引入了许多重要的改进...
、基本语法规则、面向对象核心技术、数组和集合、异常处理、文件和数据流、图形用户界面、线程、网络编程和数据库程序设计。_x000D_本书以初学者为 起点,每个章节循序渐进地向读者介绍了Java相关核心知识,并设计...
《Java2编程详解》是一本全面深入探讨Java编程技术的书籍,主要针对Java 2平台进行讲解。在Java 2平台上,Java语言的功能得到了极大的扩展,包括多线程、网络编程、I/O流、数据库连接、图形用户界面(GUI)以及Java...
JavaIO文件复制优化——JavaIO优化详解(下载可用)。个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。...
### Java文件下载的几种方式详解 在Java编程中,文件下载是常见的操作之一,无论是从本地文件系统还是网络上下载文件,都需要掌握一定的技巧和方法。本文将详细介绍几种常用的Java文件下载方式,包括本地文件下载、...
在"Java Web开发详解随书源代码下载"提供的Code文件中,读者可以找到与书中各个章节对应的源代码实例,通过实际运行和调试,加深对Java Web开发的理解,从而提升自己的编程技能。这些代码涵盖了从基础到高级的各种...
Java对各种文件的操作详解,要的快下哦
《Java2编程详解》是一本专门针对Java编程技术的深入解析书籍,Special Edition Using Java的第四版,旨在为读者提供全面、深入的Java学习资源。这本书涵盖了从基础语法到高级特性的广泛内容,适合初学者和有经验的...
Java 文件路径详解 Java 文件路径详解是一种在 Java 中获取文件路径的方式。它可以将文件路径转换为 InputStream,以便于读取文件的内容。在 Java 中,有两种方式可以获取文件路径,即使用 Class....
《Java2编程详解(Special Edition Using Java)》是一本针对Java初学者和爱好者精心编写的教程,旨在提供全面且深入的Java编程知识。本书详细介绍了Java语言的核心概念、语法和应用,是学习Java 2平台的理想资源。...
张孝祥的Java邮件开发详解涵盖了关键的概念和实践,以下是其中的知识点总结: 1. **邮件服务原理**:邮件服务器扮演着邮局的角色,通过SMTP协议进行邮件的发送和转发,而用户接收邮件则使用POP3或IMAP协议。SMTP...
《Java Bug模式详解》这本书是面向那些已经具备Java编程基础的开发者,旨在帮助他们更好地理解和解决在编程过程中遇到的各种错误和异常,提升代码质量和维护效率。书中深入剖析了Java编程中常见的bug模式,通过实例...
以上是对"Java多线程详解"主题的详细阐述,涵盖了Java多线程的基本概念、实现方式、线程控制、线程池、并发集合、线程间通信以及并发编程中常见的问题和解决方案。学习和熟练掌握这些内容对于开发高效的多线程Java...
通过`URLConnection`类,我们可以与URL对应的资源进行通信,比如下载文件或发送HTTP请求。 在网络协议方面,Java提供了对多种常用协议的支持,如HTTP、FTP和SMTP等。例如,`java.net.HttpURLConnection`类可以方便...
JSch - Java实现的SFTP(文件上传详解篇)
在Java编程环境中,有时我们需要利用已经存在的DLL(动态链接库)文件来实现特定的功能,这通常是C++或C语言编写的本地代码。本资源详细阐述了如何在Java中调用DLL,以及在这个过程中可能遇到的问题和注意事项。 ...