Добр. день у меня вопрос, как правильно настраивать пути для хранения файлов после компиляции. Использую SpringBoot и при добавлении товара в таблицу Postgres у меня создается папка для хранения файла (фото, видео) - тут все работает.
application.properties
server.port=${SERVER_PORT:8080}
file.upload.dir.products_img=./uploads/products_img
file.upload.dir.products_video=./uploads/products_video
file.upload.dir.categories=./uploads/categories_img
Но после компиляции (mvn clean install), когда запускаю програму java -jar name.jar и получаю ошибку после добавления нового товара.
ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception
java.nio.file.NoSuchFileException: ./uploads/categories_img
На сколько я понимаю, проблема с созданием пути, я использую Linux. Подскажите, как правильно действовать. На всякий случай прилагаю код метода сервиса:
@Transactional
public void addProuctService(String title,
String description,
String width,
String compoud,
String density,
String test_mater,
long category_id,
long price,
MultipartFile photo,
MultipartFile video) throws IOException {
String baseUrl = String.format("%s://%s:%d", request.getScheme(), request.getServerName(), request.getServerPort());
log.info(baseUrl);
Category category = categoryRepository.findById(category_id)
.orElseThrow(() -> new EntityNotFoundException("Category with id " + category_id + " not found"));
String fileNamePhoto = UUID.randomUUID().toString()+"."+photo.getOriginalFilename().split("\\.")[1];
String fileNameVideo = UUID.randomUUID().toString()+"."+video.getOriginalFilename().split("\\.")[1];
Path dirPhoto = Path.of(uploaDirProducts_Img);
if (!Files.exists(dirPhoto)) {
Files.createDirectory(dirPhoto);
} else {
System.out.println("Ok");
}
Path filePathPhoto = dirPhoto.resolve(fileNamePhoto);
photo.transferTo(filePathPhoto);
Path dirVideo = Path.of(uploaDirProducts_Video);
if (!Files.exists(dirVideo)) {
Files.createDirectory(dirVideo);
} else {
System.out.println("Ok");
}
Path filePathVideo = dirVideo.resolve(fileNameVideo);
video.transferTo(filePathVideo);
Product product = new Product();
product.setTitle(title);
product.setDescription(description);
product.setWidth(width);
product.setCompoud(compoud);
product.setDensity(density);
product.setTest_mater(test_mater);
product.setCreatedAt(Instant.now());
product.setCategory(category);
product.setMoney(price);
product.setPhotoUrl(baseUrl+URL_IMG+fileNamePhoto);
product.setVideoUrl(baseUrl+URL_VIDEO+fileNameVideo);
repository.save(product);
}