闽公网安备 35020302035485号
2.下载GC日志,系统dump文件用于分析





1)在系统中找到唯一ResponseEntity有关的代码

3)成功破案了,用户下载了一份大文件,文件先加载到内存才往外写,抹泪。。。。
@GetMapping("/down")
public ResponseEntity download(@RequestParam("uri") String uri) throws IOException {
File file = new File(uri);
if (!file.isFile()) {
throw new ServiceException("文件不存在");
}
String filename = FilenameUtils.getName(uri);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
HttpStatus status = HttpStatus.OK;
return new ResponseEntity<>(new FileSystemResource(file), headers, status);
}
2.使用缓存流,边读边写@GetMapping("/down")
public void download(@RequestParam("uri") String uri, HttpServletResponse response) throws IOException {
File file = new File(uri);
if (!file.isFile()) {
throw new ServiceException("文件不存在");
}
String filename = FilenameUtils.getName(uri);
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
// 堆代码 duidaima.com
try (FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(response.getOutputStream())) {
FileCopyUtils.copy(bufferedInputStream, bufferedOutputStream);
} finally {
// 使用的是try-with-resources
}
}
3.文件存储到 oss 或者是七牛云