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 与 文件类型的对应关系