添加下载代码示例

本文详细介绍了使用Java实现文件从服务器下载到客户端的完整过程,包括输入流与输出流的使用、浏览器响应头的设置、文件名编码处理及下载流的开启。针对不同浏览器进行了文件名编码适配,确保了下载过程中的文件名正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1,将文件用输入流包装

2,获取response中的输出流

3,设置浏览器响应的相关头

4,根据浏览器,对文件名编码,避免下载的时候,出现乱码

5,开流准备下载


 

1,将文件用输入流包装

InputStream inputStream = new FileInputStream(filePath+fileName);

2,获取response中的输出流

BufferedOutputStream outputStream = new BufferedOutputStream(response.getOutputStream());

3,设置浏览器响应的相关头

response.setContentType("application/doc");
//通知浏览器,以附件的形式下载而不是直接打开。
response.addHeader("Content-Disposition","attachment;filename="+fileName);

4,根据浏览器,对文件名编码,避免下载的时候,出现乱码

final String userAgent = request.getHeader("USER-AGENT");
if(StringUtils.contains(userAgent, "MSIE")){//IE浏览器
    fileName = URLEncoder.encode(fileName,"UTF-8");
}else if(StringUtils.contains(userAgent, "Mozilla")){//google,火狐浏览器
    fileName = new String(fileName.getBytes(), "ISO8859-1");
}else{
    fileName = URLEncoder.encode(fileName,"UTF-8");//其他浏览器
}

5,开流准备下载

byte[] car = new byte[1024];
int L;
while((L = inputStream.read(car)) != -1){
    if( car.length != 0) {
        outputStream.write(car,0,L);
    }
}

if(outputStream!= null) {
    outputStream.flush();
    outputStream.close();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值