public void writeOutputStream(HttpServletResponse response){
		File file = new File("file123.excel")
		//获取文件流
		InputSteam binarySteam = file.getBinaryStream();
		byte[] data = this.getFileByteArr(binarySteam );
		binarySteam.close();
		
		//设置contentType
		response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode("文件123.xlsx"),"utf-8"));
		
		ServletOutputStream outputStream = response.getOutputStream();
		outputStream.write(data);
		outputStream.flush();
		outputStream.close();
	}

	public byte[] getFileByteArr(InputSteam is){
		ByteArrayOutputStream os = new  ByteArrayOutputStream();
		byte[] buffer = new byte[1024];
		int len = 0;
		while((len = is.read(buffer)) != -1){
			os.write(buffer,0,len);
		}
		is.close();
		byte[] bytes = os.toBiyteArray();
		os.close();
		return bytes;
	}

可以加上一些try…catch…语句,将close方法放在finally语句,避免程序执行错误,但是流没有关闭

有关ContentType和文件类型,可以参考这篇文章 Content-Type 与 文件类型的对应关系

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐