使用response的输出流输出pdf文件_Java培训JavaWeb课程之文件下载

本文介绍了在JavaWeb中如何通过response的输出流来实现文件下载,特别是PDF文件。首先提出了使用href下载文件的局限性,然后详细阐述了下载步骤,包括设置响应体内容类型和Content-Disposition头,以及如何输出文件流。同时,针对文件名为中文时遇到的问题,提到了使用URLEncoder.encode编码以及火狐浏览器的特殊处理方式。
摘要由CSDN通过智能技术生成

1提出问题

如何把服务器上的文件传输给客户端。href可以吗?href可以传送某些资源,当客户端不支持此资源的显示或者打开时,就会启动下载。但是如果客户端支持显示或者打开此资源。如:图片,视频,音频,文本文件等。浏览器会直接打开他们。我们需要浏览器进行下载操作。所以单纯的href已经不能操作了。

如果资源文件是比较重要的文件,我们需要放到WEB-INF下将其保护,那么href是链接不到的。

2文件下载步骤

2.1下载步骤:

1)设置响应体

response.setContentType(this.getServletContext().getMimeType(“abc.txt”));

response.setHeader(“Content-Disposition”, “attachment;filename=”+”abc.txt”);

2)输出文件流

FileInputStream fis = new FileInputStream(this.getServletContext().getRealPath(“/abc.txt”));

ServletOutputStream stream = response.getOutputStream();

IOUtils.copy(fis, stream); //使用http://commons.io工具输出流

fis.close();

2.2存在的问题:

1)文件名为中文

  • 使用encode方法将文件名进行编码

String fileName = URLEncoder.encode(“中文.txt”,”utf-8″);

response.setHeader(“Content-Disposition”, “attachment;filename=”+fileName);

火狐不支持,显示格式不正确

火狐需要使用base64编码,加上utf-8标注。

c4f120d55b2b2f136c9667e2461cbe56.png

文章来源:Java培训

Java培训JavaWeb课程之文件下载 - 技术聚焦 - 尚硅谷​www.atguigu.com
726f8f9ffd361b2f383f482687908ccb.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值