文件下载 普通方式

本文介绍了一种使用Servlet实现文件下载的方法。通过设置HTTP响应头,指定文件类型为二进制流,解决文件名中文乱码问题,并实现了文件的逐块读取及输出。
使用servlet的方式下载:

简单的将部分核心代码摘录下来,如下


/**
* 下载文档
* @author 张国明 guomingzhang2008@gmail.com
* @version 2012-11-26 上午10:13
*/
public void download() {
OutputStream os = null;
InputStream is = null;
try {
os = response.getOutputStream();
is = new FileInputStream("d:/zhangm.txt");

// 可以下载任意类型的文件
response.setContentType("application/octet-stream");
// 设置文件编码
response.setCharacterEncoding("UTF-8");
// 解决中文文件名乱码的问题
String fileName = new String("张国明.txt".getBytes(), "iso8859-1");
// 设置文件以附件的方式进行下载
response.addHeader("Content-Disposition", "attachment;filename=" + fileName);

// 以字节的方式读入源文件,并将读入的字节输出到目标文件中
byte[] tempByte = new byte[1024];
int length = 0;
while ((length = is.read(tempByte)) != -1) {
os.write(tempByte, 0, length);
}
os.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.close();
} catch (Exception e) {
e.getMessage();
}
}
if (is != null) {
try {
is.close();
} catch (Exception e) {
e.getMessage();
}
}
}
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值