Just an example of how to return an image or a file from a rest controller. Idea can be to proxy image call or just to return a file.
@GetMapping(value="/scans/{id}/{image}", produces = MediaType.IMAGE_JPEG_VALUE) public ResponseEntity<?> getScanImage(@PathVariable String id, @PathVariable String image) { final byte[] imageBytes = bucketApi.readScan(UUID.fromString(id), image); return new ResponseEntity<>(imageBytes, HttpStatus.OK); } @GetMapping(value="/scans/stream/{id}/{image}", produces = MediaType.IMAGE_JPEG_VALUE) public void getScanImageStream(@PathVariable String id, @PathVariable String image, HttpServletResponse response) throws IOException { response.setContentType(MediaType.IMAGE_JPEG_VALUE); final InputStream imageInputStream = bucketApi.readScanStream(UUID.fromString(id), image); StreamUtils.copy(imageInputStream, response.getOutputStream()); } @GetMapping(value = "/scans/file/{id}/{fileName}", produces = "text/json") public ResponseEntity getFile(@PathVariable String id, @PathVariable(value = "fileName") String fileName, HttpServletResponse response) throws IOException { final byte[] imageBytes = bucketApi.readScan(UUID.fromString(id), fileName); return ResponseEntity.ok() .header("Content-Disposition", "attachment; filename=" + fileName ) //+ ".json" .contentType(MediaType.APPLICATION_JSON) .body }
Example on GitHub.