• Servlet实现文件下载


    把代码复制到servlet中处理方法中:

    //1.接收用户文件名称
    String filename = req.getParameter("filename");
    //2.资源文件路径
    String realPath = this.getServletContext().getRealPath("/download/" + filename);

    //3.创建流对象
    FileInputStream read = new FileInputStream(realPath);
    ServletOutputStream out = resp.getOutputStream();

    //4.设置响应头下载类型
    String mimeType = this.getServletContext().getMimeType(filename);
    resp.setHeader("Content-Type",mimeType);
    //中文字符处理
    filename = DownLoadUtils.getFileName(req, filename);

    resp.setHeader("Content-Disposition","attachment; filename="+filename);

    //5.写入(响应)文件,
    byte[] bs = new byte[1024];
    int len = 0;

    while ((len=read.read(bs)) != -1){
    out.write(bs,0,len);
    }

    out.close();
    read.close();

    DownLoadUtils类如下:

    import javax.servlet.http.HttpServletRequest;
    import java.util.Base64;
    import java.util.Base64.Encoder;
    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;

    public class DownLoadUtils {

    public static String getFileName(HttpServletRequest request, String filename) throws UnsupportedEncodingException {

    String agent = request.getHeader("User-agent");

    if (agent.contains("MSIE")) {
    // IE浏览器
    filename = URLEncoder.encode(filename, "utf-8");
    filename = filename.replace("+", " ");
    } else if (agent.contains("Firefox")) {
    // 火狐浏览器
    Encoder encoder = Base64.getEncoder();
    filename = "=?utf-8?B?" + encoder.encode(filename.getBytes("utf-8")) + "?=";
    } else {
    // 其它浏览器
    filename = URLEncoder.encode(filename, "utf-8");
    }
    return filename;
    }
    }



     
  • 相关阅读:
    【Rxjs】Rxjs预习
    【vscode】插件开发--vs控制在浏览器打开
    Unexpected directive 'XXX' imported by the module 'AppMoode'
    【vscode插件开发】vscode->angular组件跳转、数据监听流程
    pip 错误Requested **, but installing version **
    Temporary failure in name resolution
    python yield
    Python partial函数
    excel的导入导出
    Apache2.4 + Tomcat7 负载均衡配置
  • 原文地址:https://www.cnblogs.com/M87-A/p/12584445.html
Copyright © 2020-2023  润新知