У меня есть такой метод в моем контроллере REST, возвращающий данные файла:
@RequestMapping(
value = "by-id/{attachmentId}",
method = RequestMethod.GET
)
public ResponseEntity<InputStreamResource> attachmentById(
@PathVariable("attachmentId") String attachmentId) {
GridFSDBFile file = service.getAttachment(attachmentId);
...... some unrelated code here, setting headers, etc .....
return new ResponseEntity<InputStreamResource>(
new InputStreamResource(file.getInputStream()), respHeaders, HttpStatus.OK);
}
Это работает нормально, но в отчете Fortify я опубликую InputStream, явно открытый в file.getInputStream()
. Возможно, мне пришлось использовать либо try-with-resources, так как InputStream является автозамещаемым, либо вызывать file.getInputStream().close()
в finally
блоке. Но, похоже, я не могу этого сделать, потому что я точно не знаю реализации ни конструктора InputStreamResource
, ни его методов, может ли этот входной поток все еще использоваться в возвращенном ResponseEntity.
Что мне делать?