Недавно кто-то загрузил файл, имя которого содержало недопустимые символы (двойной дефис), что привело к невозможности повторной загрузки файла. В данном случае имя файла было
Some name -- some other information
Для загрузки имя файла устанавливается путем получения исходного имени файла, что является бизнес-правилом.
file.setFileName(file.getFile().getOriginalFilename());
Это привело к тому, что двойной дефис превратился в два перевернутых вопросительных знака, и по какой-либо причине невозможно было получить файл обратно с сервера.
Мне интересно, существует ли программное решение для проверки исходного имени файла в такой ситуации.
Для прозрачности, вот код для загрузки файла файл:
public void saveOpcertCeuFile(OpcertCeuFileUpload file) {
UmdContact user = secUtilService.getActiveUser();
String username = user.getEmail();
Date now = new Date();
file.setCreatedTs(now);
file.setLastUpdatedTs(now);
file.setCreatedBy(username);
file.setLastUpdatedBy(username);
file.setFileName(file.getFile().getOriginalFilename());
file.setIsApproved(Boolean.FALSE);
file.setIsDeleted(Boolean.FALSE);
try {
file.setByteContents(file.getFile().getBytes());
} catch (Exception ex) {
log.info(ex);
throw new RuntimeException(ex);
}
dao.insertOpcertCeuFileUpload(file);
Path path = this.getOptcertCeuFilePath(file);
String configF = envService.getServerUrl();
file.setFilePath(String.valueOf(path));
dao.updateOpcertCeuFilePath(file);
try {
File file1 = path.toFile();
file1.getParentFile().mkdirs();
Files.write(path, file.getByteContents(), StandardOpenOption.CREATE_NEW);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
Подробнее здесь: https://stackoverflow.com/questions/649 ... -file-name