文件下载,主要就有两点,1.设置响应头,2.获取响应流。先后顺序不能搞混
1.设置响应头这个主要 声明这个是附件(attachment) 可以直接下载都本地,下载的文件名和后缀都定义好了。
2.获取响应流,主要是用于文件流写入这里传输给客户端,需要注意的是,需要先声明响应头然后才获取相应流,否则响应头不起效果。
@RequestMapping("/download")
public void download(HttpServletResponse response) throws IOException {
response.setHeader("Content-Disposition", "attachment;filename=testfile.txt"); // 直接下载,文件名我这边直接就定死了,有需要可以自己修改下
ServletOutputStream outputStream = response.getOutputStream();
InputStream iStream = new FileInputStream(new File("Desktop\\testfile\\tt.txt")); //下载的哪个文件
//下面就是传统的文件传输格式
byte[] data = new byte[1024];
int len = -1;
while ((len = iStream.read(data)) != -1) {
outputStream.write(data, 0, len);
}
outputStream.flush();
outputStream.close();
iStream.close();
System.out.println("文件开始下载中");
}