Скачивание файла через остальную api весеннюю загрузку и с несколькими NULL - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть rest controller, который загружает CSV File из classpath.

@GetMapping("/template/download")
    public ResponseEntity<byte[]> downloadCsv() throws IOException {
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.set( HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=template.csv" );
        return ResponseEntity.status(HttpStatus.OK).headers(httpHeaders).body(csvUtil.downloadCsvTemplate());
    }

Ниже мой downloadCsvTemplate() код

public byte[] downloadCsvTemplate() throws IOException {
        File resource = new ClassPathResource("templates/template.csv").getFile();
        return util.convertFileToByteArray(resource);
    }
public byte[] convertFileToByteArray(File file) throws IOException {
        byte[] bytes = new byte[1024];

        try(FileInputStream fis = new FileInputStream(file);) {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();

            for (int readNum; (readNum = fis.read(bytes)) != -1;) {
                bos.write(bytes, 0, readNum);
            }
        }

        return bytes;
    }

Когда я пытаюсь чтобы получить доступ к API, я могу загрузить файл с контентом, но я получаю дополнительное содержимое, например ниже:

1012 *enter image description here

Любая идея о том, как получить только ниже содержание:

email,password,firstName
abc@abc.com,ABC@123,Test

Ценю помощь.

1 Ответ

0 голосов
/ 20 февраля 2020

Причина, по которой вы видите необработанные данные в ответе, заключается в том, что CSV - это не что иное, как строка, разделенная запятыми. Попробуйте добавить контент-тип.

@GetMapping("/template/download")
public ResponseEntity<byte[]> downloadCsv() throws IOException {
    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.set( HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=template.csv" );
    return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.parseMediaType("text/csv")).headers(httpHeaders).body(csvUtil.downloadCsvTemplate());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...