我能够将图片上传到服务器,并且可以在路径/static/images/gallery
中找到我的图片。现在,当我尝试加载已上传的图片时,应用程序无法显示它们。只有在重新启动应用程序后才能正常显示。
我也遇到了同样的问题!因为静态目录是在启动时加载的!你必须将上传路径放在资源之外! 假设这个项目名字叫做“Demo”,我认为你的目录应该像这样:
Demo
∟ src
∟ main
∟ java
∟ resources
∟ static
∟ images
∟ gallery
@Configuration
public class AdditionalResourceWebConfiguration implements WebMvcConfigurer {
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/upload/**").addResourceLocations("file://" + System.getProperty("user.dir") + "/src/main/upload/");
}
}
文件:你的固定路径!
现在你的目录就像这样:
Demo
∟ src
∟ main
∟ java
∟ resources
∟ static
∟ images
∟ gallery
∟ upload
∟ static
∟ images
∟ gallery
好的!重新启动您的Spring Boot!尝试上传一些图片!您可以在http://localhost:80/upload/static/images/gallery/demo.jpg中看到这些图片。
file:///
而不是file://
。 - Big Zed静态目录在启动时加载。因此,当您上传图像或更改静态文件夹下的任何文件或文件夹时,这些更改将不会反映出来,因为ApplicationContext已经初始化。
若要上传动态图像,请按照以下步骤进行:
第一步:创建一个位于 Static 文件夹之外的目录,比如说我在服务器上创建了一个名为 media 的目录。
/var/www/html/myapp/media
步骤2: 在媒体目录中上传文件。
步骤3: 实现WebMvcConfigurer。
@Configuration
public class AdditionalResourceWebConfiguration implements WebMvcConfigurer {
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/media/**").addResourceLocations("file:media/");
}
}