12. response下载文件

2020-11-09  本文已影响0人  卡尔书院

HttpServletResponse

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

简单分类

   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();
上一篇 下一篇

猜你喜欢

热点阅读