Как обновить sh папку, используя программу java в intellij / Eclipse? (Раскрыты) - PullRequest
1 голос
/ 09 апреля 2020

В настоящее время я работаю над проектом Spring Boot, загружая изображения, изображение создается в resources\static\images, но когда я пытаюсь отобразить изображение, оно не отображается. После рефракции sh папки это отражается. Вот мой код:

// Method for uploading image.
    public void uploadImage(MultipartFile file) {
        byte[] bytes = new byte[0];
        try {
            bytes = file.getBytes();
        } catch (IOException e) {
            e.printStackTrace();
        }
        BufferedOutputStream stream = null;
        try {
            stream = new BufferedOutputStream(new FileOutputStream(new File(
                    "D:\\New Language\\Spring Boot Demo\\employee_details\\src\\main\\resources\\static\\images"
                            + File.separator + file.getOriginalFilename())));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        try {
            stream.write(bytes);
            stream.flush();
            stream.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }


// JSP Code For displaying image.   
    <div class="card-header border-0">
        <img src="/images/${emp.path}" alt="My Image">
    </div>                                                   

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Вы не должны изменять его в исходной папке. Я не уверен на 100%, но я думаю, что IntelliJ будет использовать .../target/classes/ как classpath и будет копировать файлы туда во время компиляции. Spring Boot загрузит любую папку /static, найденную в пути к классам. Таким образом, вы можете перезаписывать файлы там вместо .../src/main/resources. Это будет работать до тех пор, пока IntelliJ не решит перезаписать их во время компиляции или выполнения mvn clean install.

Кроме того, если вы запустите автономное приложение весенней загрузки, ресурсы будут находиться внутри jar-файла, так что это не очень хорошо Идея использовать в качестве хранилища Dynami c.

Лучше создать отдельную папку для хранилища Dynami c и настроить ее следующим образом:

spring.resources.static-locations=classpath:/static/,file:/D:/...

Конечно, если вы обновляете эта папка во время выполнения, она на самом деле не устает больше c. Проверьте также https://www.baeldung.com/spring-mvc-static-resources

0 голосов
/ 10 апреля 2020

Итак, наконец, через 3 дня я нашел решение этой проблемы. Поскольку resources\static\images\ place - это о состоянии c контента, и, как правило, плохая идея сохранять загруженный (динамический c) контент внутри вашего приложения. Поэтому я создал папку вне папки resources и поместил все загруженные (динамические c) файлы изображений.

image

Вот как я решил эту проблему. Создайте новый класс и попробуйте это.

@Configuration
public class ResourceWebConfiguration implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/images/**").addResourceLocations("file:images/");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...