如何使用intellij / Eclipse中的Java程序刷新文件夹? (已解决)

时间:2020-04-09 10:14:32

标签: java spring spring-boot spring-mvc jsp

我当前正在处理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>                                                   

2 个答案:

答案 0 :(得分:1)

您不应在源文件夹中进行更改。我不确定100%,但是我认为IntelliJ将使用test_labels.csv作为类路径,并在编译期间将文件复制到那里。 Spring Boot将加载它在类路径中找到的任何.../target/classes/文件夹。 因此,您可以在此处覆盖文件,而不是在/static下覆盖文件。这将一直有效,直到IntelliJ决定在编译或执行.../src/main/resources期间覆盖它们为止。

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

最好为动态存储创建一个单独的文件夹,并将其配置如下:

mvn clean install

当然,如果您在运行时更新该文件夹,则它不再是静态的。还要检查My test_labels.csv

答案 1 :(得分: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/");
    }
}