Отправка файлов Excel с микро на микро

Пытаюсь наладить связь между двумя микро, где первый получает петицию от фронтенда и связывается с другим микро, который создает файл excel и отправляет его обратно в первый микро, начиная загрузку файла.

Во-первых, я попытался напечатать простой ответ String, чтобы проверить связь между микроконтроллерами, и это сработало правильно, но то же самое для файлов не сработало.

Вот код, которому я следую: Для контроллера А:


    @GetMapping(path = "/test")
    public void getEntities2(HttpServletRequest request, HttpServletResponse response) throws IOException {   

        ResponseEntity<Workbook> responseEntity = new RestTemplate()
                .getForEntity("http://localhost:8080/proceso/excel", Workbook.class);
        assertThat(responseEntity.getStatusCode(), equalTo(HttpStatus.OK));
        response.setHeader("Content-disposition", "attachment; filename = " + "test.xls");
        Workbook workbook = responseEntity.getBody();
        workbook.write(response.getOutputStream());
        workbook.close();       
    }

Второй контроллер (генератор файлов Excel):


@GetMapping(path = "/excel")
    public ResponseEntity<Workbook> test3(HttpServletResponse response) throws Exception {
        HashMap<String, ArrayList<String>> test = new HashMap<String, ArrayList<String>>();
        Workbook workbook =  CreateExcel.excelCreator(test);

        Workbook responseFile = workbook;
        return ResponseEntity.ok()
                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename = " + "test.xls")
                .contentType(MediaType.MULTIPART_FORM_DATA)
                .body(responseFile);
    }


И тогда появляется следующая ошибка:

org.springframework.web.client.HttpClientErrorException$NotAcceptable: 406 null

Я просто хочу получить файл в первом контроллере и загрузить Excel с локального хоста. Есть ли способ сделать это? Спасибо всем.

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я обнаружил проблему. Файл excel представляет собой файл потока октетов, поэтому его необходимо получить в виде массива byte[]. Это контроллер А:

    @GetMapping(path = "/")
public ResponseEntity<byte[]> getEntities() throws IOException {   
ResponseEntity<byte[]> responseEntity = new RestTemplate()
.getForEntity("http://localhost:8080/excel", byte[].class);
assertThat(responseEntity.getStatusCode(), equalTo(HttpStatus.OK));

return responseEntity;
}

И контроллер Б:

@GetMapping(path = "/excel")
public void getExcel(HttpServletResponse response) throws Exception {

Iterable<InstancesAggregate> list = instancesAggregate.myfindAll(); //Creating a list
HashMap<String, ArrayList<String>> test = CreateExcel.setExcelProceso(list);
Workbook workbook =  CreateExcel.excelCreator(test);
response.setHeader("Content-disposition", "attachment; filename = " + "test.xls");
   workbook.write(response.getOutputStream());
   workbook.close();    

}

Это отлично работает для меня, надеюсь, что кто-то найдет информацию полезной.

Другие вопросы по теме