С Spring 4.1 и выше вы можете возвращать почти все что угодно (например, картинки, PDF-файлы, документы, банки, молнии и т. д.) довольно просто без каких-либо дополнительных зависимостей. Например, следующим способом может быть способ возврата изображения профиля пользователя из MongoDB GridFS:
@RequestMapping(value = "user/avatar/{userId}", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<InputStreamResource> downloadUserAvatarImage(@PathVariable Long userId) {
GridFSDBFile gridFsFile = fileService.findUserAccountAvatarById(userId);
return ResponseEntity.ok()
.contentLength(gridFsFile.getLength())
.contentType(MediaType.parseMediaType(gridFsFile.getContentType()))
.body(new InputStreamResource(gridFsFile.getInputStream()));
}
Что нужно отметить:
С помощью этого метода вам не нужно беспокоиться об автоподготовке в HttpServletResponse, бросая IOException или копируя данные потока.
Поскольку проект имеет gitlab-ci.yml вместо .gitlab-ci.yml, gitlab-runner пропускает мой конфигурационный файл и использует конфигурацию по умолчанию, которая запускает команду docker, в то время как я устанавливаю executor для shell. имя моего файла не начинается с "." , gitlab-runner игнорирует мой конфиг.