美文网首页
12. response下载文件

12. response下载文件

作者: 卡尔书院 | 来源:发表于2020-11-09 21:44 被阅读0次

HttpServletResponse

web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse;

  • 如果要获取客户端请求过来的参数:找HttpServletRequest
  • 如果要给客户端响应一些信息:找HttpServletResponseI

简单分类

  • 负责向浏览器发送数据的方法
   public ServletOutputStream getOutputStream() throws IOException;//其他流

   public PrintWriter getWriter() throws IOException;//写中文
  • 向浏览器发送响应头的方法
public void setDateHeader(String name, long date);

public void addDateHeader(String name, long date);

public void setHeader(String name, String value);

public void addHeader(String name, String value);

public void setIntHeader(String name, int value);

public void addIntHeader(String name, int value);

public void setCharacterEncoding(String charset);

public void setContentLength(int len);

public void setContentType(String type);

public void setBufferSize(int size);

常见应用

  1. 下载文件
//1 要下载的文件路径;
String realPath = "E:\\桌面快捷方式源\\code\\java\\project\\HelloServlet\\response\\src\\main\\resources\\林奚.png";
System.out.println(realPath);
//2 要下载的文件名;
String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
System.out.println(fileName);
//3 浏览器支持我们下载文件, 中文文件名用URLEncoder.encoder()编码, 否则有可能乱码;
resp.setHeader("Content-Disposition","attachment;filename = "+ URLEncoder.encode(fileName, StandardCharsets.UTF_8));
//4 获取下载文件的输入流;
FileInputStream in = new FileInputStream(realPath);
//5 创建缓冲区;
int len = 0;
byte[] buffer = new byte[1024];
//6 获取outputStream对象;
ServletOutputStream out = resp.getOutputStream();
//7 将FileOutputStream流写入到buffer缓冲区;使用OutputStream将缓冲区中的数据输出到客户端;
while ((len = in.read(buffer))>0){
    out.write(buffer, 0, len);
}
//8 关闭流
in.close();
out.close();

相关文章

网友评论

      本文标题:12. response下载文件

      本文链接:https://www.haomeiwen.com/subject/aqnhbktx.html