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

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值