我能够将图片上传到服务器,我可以在路径/static/images/gallery
中找到我的图片。现在,当我尝试加载上传的图像时,应用程序不显示主题。仅在应用程序重启后。
答案 0 :(得分:1)
静态目录在启动时加载。因此,当您上传图像或对静态文件夹下的任何文件或文件夹进行更改时,由于ApplicationContext已经初始化,因此无法反映。
要上传动态图片,您可以按以下步骤操作:
第1步:在静态文件夹外创建一个目录,说我在服务器上创建媒体
/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/");
}
}
上传后,您可以动态访问文件http://localhost:8080/media/filename.jpg。
答案 1 :(得分:1)
我遇到了同样的问题!因为静态目录是在启动时加载的!您必须将上传路径放在资源之外! 让这个项目名称是“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
OK!重启你的春季靴子!尝试上传一些图片!您可以在http://localhost:80/upload/static/images/gallery/demo.jpg
中查看这些图片答案 2 :(得分:1)
考虑一下战争,罐子,耳朵 - >简单地说 - >部署的Java应用程序是归档文件,归档文件在创建后不可更改。在我们的例子中,这意味着当您在路径中保存任何资源时,它将加载到尚未构建的应用程序路径(项目)...但是您正在尝试获取资源的应用程序是构建的存档文件,这是不存在的请求资源然而。重新启动应用程序后,再次构建并创建新的存档文件 - >这就是为什么它现在可见;)))。解决方案如前所述 - >