diff --git a/ems-engine/src/main/java/it/integry/ems/document/controller/DocumentController.java b/ems-engine/src/main/java/it/integry/ems/document/controller/DocumentController.java index 4ab4c43da3..6eaba3efa8 100644 --- a/ems-engine/src/main/java/it/integry/ems/document/controller/DocumentController.java +++ b/ems-engine/src/main/java/it/integry/ems/document/controller/DocumentController.java @@ -698,36 +698,34 @@ public class DocumentController { } @RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_STB_ACTIVITY_FILE_ATTACHMENT, method = RequestMethod.GET) - public byte[] downloadStbActivityFileAttachment(HttpServletRequest request, HttpServletResponse response, - @RequestParam(CommonConstants.PROFILE_DB) String config, - @RequestParam String id, - @RequestParam String fileName, - @RequestParam(defaultValue = "false") boolean requestThumbnail) { + public ResponseEntity downloadStbActivityFileAttachment(@RequestParam(CommonConstants.PROFILE_DB) String config, + @RequestParam String id, + @RequestParam String fileName, + @RequestParam(defaultValue = "false") boolean requestThumbnail) throws Exception { + StbActivityFile stbActivityFile = new StbActivityFile() + .setId(id) + .setFileName(fileName); + stbActivityFile.setOperation(OperationType.SELECT_OBJECT); - try { - StbActivityFile stbActivityFile = new StbActivityFile() - .setId(id) - .setFileName(fileName); - stbActivityFile.setOperation(OperationType.SELECT_OBJECT); + stbActivityFile = entityProcessor.processEntity(stbActivityFile, multiDBTransactionManager); - stbActivityFile = entityProcessor.processEntity(stbActivityFile, multiDBTransactionManager); + if (stbActivityFile != null) { + byte[] byteArr = requestThumbnail && stbActivityFile.getThumbnail() != null ? stbActivityFile.getThumbnail() : stbActivityFile.getContent(); - if (stbActivityFile != null) { - byte[] byteArr = requestThumbnail && stbActivityFile.getThumbnail() != null ? stbActivityFile.getThumbnail() : stbActivityFile.getContent(); + MediaType mediaType = mimetypesFileTypeMap.getContentType(stbActivityFile.getFileName()); - response.setContentType(mimetypesFileTypeMap.getContentType(stbActivityFile.getFileName()).toString()); - response.setStatus(HttpServletResponse.SC_OK); - response.addHeader("Content-Disposition", "attachment; filename=\"" + stbActivityFile.getFileName() + "\""); - response.setContentLength(byteArr != null ? byteArr.length : 0); - return byteArr; - } - - response.sendError(404, "Allegato non trovato"); - return null; - } catch (Exception e) { - logger.error(request.getRequestURI(), e); - return null; + return ResponseEntity.ok() + .contentType(mediaType) + .contentLength(byteArr.length) + .header(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition + .builder("attachment") + .filename(stbActivityFile.getFileName()) + .build() + .toString()) + .body(byteArr); } + + return ResponseEntity.notFound().build(); } @RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_STB_ACTIVITY_FILE_ATTACHMENT + "/{id}/{fileName}", method = RequestMethod.GET)