Как преобразовать байт [] в ResponseEntity как приложение / октет-поток

#java #spring-boot #file #swagger-codegen-maven-plugin

#java #весенняя загрузка #файл #swagger-codegen-maven-plugin

Вопрос:

Мое приложение построено на SprinBoot, технологии Java, я хочу написать API для загрузки файла, и я использую swagger-codegen-maven-plugin, и в спецификации это указано ниже для загрузки файла

 content:
    application/octect-stream:
        schema:
            type: string
            format: binary
  

Код, который автоматически генерируется с помощью swagger codegen, содержит возвращаемый тип как
ResponseEntity<String> в приложении Java SpringBoot. Теперь у меня есть данные файла в byte [], как преобразовать их в строку и отправить как application / octect-stream ?.

Также дайте мне знать, находятся ли мои данные в файловом объекте вместо byte [], как их отправить?

Ответ №1:

Если предполагается, что ваш api возвращает файл, который должен быть загружен в качестве ответа на него, то ваш api должен возвращать responseResponseEntity. Ниже приведен снимок кода, который вы можете попробовать.

 private ResponseEntity<ByteArrayResource> getRespEntity(Byte[] fileByte) {
    ByteArrayResource resource = new ByteArrayResource(fileByte);
    HttpHeaders headers = new HttpHeaders();
    headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
    headers.add("Pragma", "no-cache");
    headers.add("Expires", "0");
    
    return ResponseEntity.ok().headers(headers).contentLength(resource.contentLength())
            .contentType(MediaType.parseMediaType("application/octet-stream"))
            .body(resource);
}