Java文件下载详解
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();
}
程序员的基础教程:菜鸟程序员
Java文件下载详解的更多相关文章
- Java虚拟机详解----JVM常见问题总结
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Java内部类详解
Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...
- 黑马----JAVA迭代器详解
JAVA迭代器详解 1.Interable.Iterator和ListIterator 1)迭代器生成接口Interable,用于生成一个具体迭代器 public interface Iterable ...
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
- [转] Java内部类详解
作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...
- Java面向对象详解
Java面向对象详解 前言:接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学 过的基础知识的想法.一是原来刚开始学习接触编程,一个人跌跌撞撞摸索着往前走,初学的时候很多东西理解的也懵 ...
- java 乱码详解_jsp中pageEncoding、charset=UTF -8"、request.setCharacterEncoding("UTF-8")
http://blog.csdn.net/qinysong/article/details/1179480 java 乱码详解__jsp中pageEncoding.charset=UTF -8&quo ...
- java 泛型详解(普通泛型、 通配符、 泛型接口)
java 泛型详解(普通泛型. 通配符. 泛型接口) JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能---- ...
- Java synchronized 详解
Java synchronized 详解 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 1.当两个并发线程访问同一个对象object ...
随机推荐
- nginx 配置 getsimplecms 配置文件
getsimplecms的安装需要两个php类库,一个是dom操作,一个是gd library. 所以先安装这两个类库,重启php解释器. yum install php-xml; yum insta ...
- boost 中文编码转换
Lstring CHanderHttp::CircleDesc(Lint nCurCircle, Lint nMaxCircle,Lint usercount){ std::stringstream ...
- CNN中卷积层的计算细节
原文链接: https://zhuanlan.zhihu.com/p/29119239 卷积层尺寸的计算原理 输入矩阵格式:四个维度,依次为:样本数.图像高度.图像宽度.图像通道数 输出矩阵格式:与输 ...
- 事务的隔离级别以及oracle中的锁
事务的概念及特性 事务,一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit). 例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语 ...
- Microsoft SQL Server Express各版本对比
Microsoft® SQL Server® 2016 Express 支持的操作系统 Windows 10 , Windows 8, Windows Server 2012, Windows Ser ...
- 黄聪:360、chrome开发插件扩展如何跨域调用其他网站的信息并且显示在扩展、tab中的api
chrome插件提供了查找tab的api chrome.tabs.get(integer tabId, function callback) 但是出于安全的考虑,tab的属性中没有document 因 ...
- 黄聪:[C#]如何获取变量的名字,不是值,是名称。返回名字的字符串
找了好久,最后在国外的论坛找到了解决办法,直接贴代码吧. 方法一: public static class MemberInfoGetting { public static string GetMe ...
- Could not write content: No serializer found for class and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) )
1. 问题 org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: N ...
- (转)C#与Outlook交互收发邮件
本文转载自:http://www.cnblogs.com/Moosdau/archive/2012/03/11/2390729.html .Net对POP3邮件系统已经集成了相应的功能,但是如果是基于 ...
- MU-MIMO学习
设备的认证查询 https://www.wi-fi.org/product-finder 1. MU-MIMO不会增大无线的最大速度 2. MU-MIMO需要路由器和客户端同时支持 3. 当你没有或者 ...