An open API service indexing awesome lists of open source software.

https://github.com/andresp08/springboot-file-upload

This Spring Boot application is designed to facilitate generic CSV file uploads with a focus on flexibility and ease of use. The primary goal of this project is to allow users to upload CSV files.
https://github.com/andresp08/springboot-file-upload

file-upload java maven opencsv postgresql springboot swagger-ui

Last synced: 8 months ago
JSON representation

This Spring Boot application is designed to facilitate generic CSV file uploads with a focus on flexibility and ease of use. The primary goal of this project is to allow users to upload CSV files.

Awesome Lists containing this project

README

          

# SpringBoot File Upload

`Swagger Documentation`

![file upload success](https://github.com/Andresp08/springBoot-file-upload/assets/45151760/f1ecd288-3b75-4f25-8a31-0e0ccb470d84)

## Upload files with springboot using opencsv

## If you want to use this generic file upload without the anotation @CsvBindByName, you can replace the GenericCsvParseToEntity methods for:

public Set parseCsvToEntity(MultipartFile file, Class entityClass) throws IOException,
CsvValidationException {
Set entities = new HashSet<>();

try (CSVReader reader = new CSVReader(new InputStreamReader(file.getInputStream()))) {
String[] header = reader.readNext();
String[] line;

while ((line = reader.readNext()) != null) {
Entity entity = buildEntity(header, line, entityClass);
entities.add(entity);
}
}
return entities;
}

private Entity buildEntity(String[] header, String[] line, Class entityClass) {
try {
Entity entity = entityClass.getDeclaredConstructor().newInstance();

for (int i = 0; i < header.length; i++) {
String columnName = header[i];
String cellValue = line[i];

Field field = entityClass.getDeclaredField(columnName);
field.setAccessible(true);

if (field.getType() == String.class) {
field.set(entity, cellValue);
} else if (field.getType() == int.class) {
field.set(entity, Integer.parseInt(cellValue));
}
field.setAccessible(false);
}
return entity;
} catch (Exception e) {
throw new RuntimeException("Error al construir entidad", e);
}
}