文件下载

publicvoid doGet(HttpServletRequest request, HttpServletResponseresponse) throwsServletException, IOException {

    // 1.接收参数

    String filename = request.getParameter("filename");

    // 解决get请求乱码问题

    filename = new String(filename.getBytes("iso-8859-1"), "utf-8");

    // 4.1此行代码已解决了乱码问题

    String realPath = this.getServletContext().getRealPath("/download/" + filename);

    // 2.设置2个头

    // 动态获得文件MIME类型

    String fileType = this.getServletContext().getMimeType(filename);

    response.setHeader("Content-Type", fileType);

 

    // 4.2解决下载页面文件的中文问题 IE使用的是URL编码,FireFox使用的是BASE64

    // 获得请求头User-Agent

    String header = request.getHeader("User-Agent");

    if (header.contains("Firefox")) {

       filename = base64EncodeFileName(filename);

        或者是这样

        byte[] bytes = filename.getBytes("UTF-8");
        filename = new String(bytes,"ISO-8859-1");

    } else {

       filename =URLEncoder.encode(filename, "utf-8");

    }

    // 此头格式固定,设置之后,浏览器可以打开,但也会提示让你下载

    response.addHeader("Content-Disposition", "attachment;filename=" + filename);

 

    // 3.设置输入流

    InputStream is = newFileInputStream(realPath);

    OutputStream os = response.getOutputStream();

    // 输入流与输出流对接

    intlen = 0;

    byte[] b = newbyte[1024];

    while ((len = is.read(b)) !=-1) {

       os.write(b, 0, len);

    }

    is.close();

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值