JavaWeb实现资源下载及解决中文乱码问题

任务:实现图片下载和压缩文件下载,解决中文乱码问题

一、解决中文乱码(详细看代码)

问题(中文名会出现乱码,英文不会):
resp.setHeader( "content-disposition", "attachment;filename-"+filename)


解决(中文名恢复正常):
resp.setHeader("content-disposition","attachment;filename="+ URLEncoder.encode(filename,"utf-8"));
二、资源下载

准备照片或压缩包

压缩包Library.zip , 压缩包照片library.jpg , 英文照片gongzi.jpg , 中文照片:杰.jpeg

download.jsp前端代码:

<img src="img/gongzi.jpg" width="350px" height="450px"><br>
<a href="DownControllor?resourcename=img/gongzi.jpg">下载</a></br>
<img src="img/杰.jpeg" width="400px" height="250px"><br>
<a href="DownControllor?resourcename=img/杰.jpeg">下载</a></br>
<img src="img/Library.jpg" width="65px" height="63px"></br>
<a href="img/Library.zip">下载</a>

DownControllor后端代码:

@WebServlet("/DownControllor")
public class DownControllor extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取资源名字
        String resourcename = req.getParameter("resourcename");
        //获取资源路径
        String realPath = this.getServletContext().getRealPath(resourcename);
        //截取文件名
        int i = realPath.lastIndexOf(File.separator);
        String filename = realPath.substring(i + 1);
        //解决中文乱码问题
        /*resp.setHeader( s:"content-disposition", s1:"attachment;filename-"+filename);*/
        resp.setHeader("content-disposition","attachment;filename="+ URLEncoder.encode(filename,"utf-8"));
        FileInputStream inputStream = new FileInputStream(realPath);
        ServletOutputStream out = resp.getOutputStream();
        byte[] b =new byte[1024];
        int res = 0;
        while((res = inputStream.read(b))!=-1){
            out.write(b,0,res);
        }
        out.close();
        inputStream.close();
    }
}

运行结果:

 点击下载:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值