如何在intellij / Eclipse中使用java程序刷新文件夹?

问题描述 投票:0回答:2

我目前正在开发一个 Spring Boot 项目,同时上传在

resources\static\images
中创建的图像,但是当我尝试显示图像时,它没有显示。刷新文件夹后,它就会反映出来。 这是我的代码:

// 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>                                                   
java spring spring-boot spring-mvc jsp
2个回答
1
投票

您不应在源文件夹中更改它。我不是 100% 确定,但我认为 IntelliJ 将使用

.../target/classes/
作为类路径,并在编译期间将文件复制到那里。 Spring Boot 将加载它在类路径中找到的任何
/static
文件夹。 因此您可以覆盖那里的文件,而不是在
.../src/main/resources
下。这将一直有效,直到 IntelliJ 决定在编译期间覆盖它们或执行
mvn clean install

此外,如果您独立运行 Spring Boot 应用程序,资源将位于 jar 文件内,因此用作动态存储并不是一个好主意。

最好单独创建一个文件夹用于动态存储,配置如下:

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

当然,如果您在运行时更新该文件夹,它就不再是真正静态的了。另请检查https://www.baeldung.com/spring-mvc-static-resources


0
投票

所以三天后我终于找到了这个问题的解决方案。 由于

resources\static\images\
地方是关于静态内容的,并且由于将上传的(动态)内容保存在应用程序中通常是一个坏主意。因此,我在
resources
文件夹之外创建了一个文件夹,并放置所有上传的(动态)图像文件。

Image

这是我解决这个问题的方法。 创建一个新类并尝试这个。

@Configuration
public class ResourceWebConfiguration implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/images/**").addResourceLocations("file:images/");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.