Чтобы загрузить файл CSV в приложении Spring Boot, вы можете использовать различные методы. Вот несколько подходов, которые вы можете рассмотреть:
- Использование HttpServletResponse:
Вы можете записать данные CSV непосредственно в выходной поток HttpServletResponse и установить соответствующие заголовки, чтобы указать тип и расположение файла. Это предложит браузеру загрузить файл. Вот пример:
@GetMapping("/download")
public void downloadCSV(HttpServletResponse response) throws IOException {
response.setContentType("text/csv");
response.setHeader("Content-Disposition", "attachment; filename=\"data.csv\"");
// Write your CSV data to the response output stream
// ...
}
- Использование ResponseEntity:
Вы можете создать объект ResponseEntity с данными и заголовками CSV и вернуть его из метода контроллера. Этот подход позволяет вам воспользоваться преимуществами конвертеров HTTP-сообщений Spring. Вот пример:
@GetMapping("/download")
public ResponseEntity<Resource> downloadCSV() {
// Create a Resource object with your CSV data
Resource resource = new ByteArrayResource(csvData.getBytes());
return ResponseEntity
.ok()
.contentType(MediaType.parseMediaType("text/csv"))
.header("Content-Disposition", "attachment; filename=\"data.csv\"")
.body(resource);
}
- Использование библиотеки загрузки файлов.
Вы можете использовать сторонние библиотеки, такие как Apache Commons IO или Spring ResourceUtils, для управления процессом загрузки файлов. Эти библиотеки предоставляют удобные методы записи данных в файл и их потоковой передачи клиенту. Вот пример использования Apache Commons IO:
@GetMapping("/download")
public void downloadCSV(HttpServletResponse response) throws IOException {
response.setContentType("text/csv");
response.setHeader("Content-Disposition", "attachment; filename=\"data.csv\"");
// Use Apache Commons IO to copy the CSV file to the response output stream
File csvFile = new File("path/to/your/data.csv");
FileUtils.copyFile(csvFile, response.getOutputStream());
}