@gameforyouonline

Как правильно решить проблему с путями храниния фото и видео файлов после компиляции?

Добр. день у меня вопрос, как правильно настраивать пути для хранения файлов после компиляции. Использую 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);
    }
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы