zoukankan      html  css  js  c++  java
  • 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;
    }
    }



     
  • 相关阅读:
    Task的使用
    WinStore之Application Data
    WinStore控件之Button、HyperlinkButton、RadioButton、CheckBox、progressBar、ScrollViewer、Slider
    WinStore控件之TextBox
    WinStore控件之TextBlock
    WinStore控件之Button
    设计模式之单例模式
    WinStore开发知识导航集锦
    WindowsStore页面导航
    导出程序界面(UI)到图片
  • 原文地址:https://www.cnblogs.com/M87-A/p/12584445.html
Copyright © 2011-2022 走看看