图片上传成功但是访问一直404

javaWeb 前后端不分离项目,图片上传成功但是访问一直404

问题描述:

个人练习生搭建了一个前后端不分离的项目,里边含有图片上传服务。图片上传成功后发现resources\static文件夹下已经有了对应的文件,但是通过服务器访问一直404。但是重启服务后,又可以访问到之前上传的图片,奇怪啊

原因

图片确实保存到了后端,但是后端没有刷新(仍然处于上一个状态,此时ajax请求(其它请求也看不到,当然照片不是存在数据库中的,数据库也只是存储相对路径)就会报404 not found错误),也就是没有找到需要回显的图片。所以可以通过重新部署完成。

但是每一次上传图片都要重新部署,显得非常的不合理。

解决方案

方法一:使用 WebMvcConfigurer 接口

在您的 Spring Boot 应用程序中,创建一个名为 MvcConfig 的 Java 配置类,并实现 WebMvcConfigurer 接口:
两种写法,写法一

@Configuration
public class MvcConfig implements WebMvcConfigurer {
    
    

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    
    
    	//registry.addResourceHandler(相对路径)
    	//addResourceLocations(绝对路径)
    	//System.getProperty("user.dir") 获取当前项目的绝对路径
    	//
        registry.addResourceHandler("myresources/**").addResourceLocations("file:"+System.getProperty("user.dir")+"\\src\\main\\resources\\static\\images\\headImage\\");
    }
}

写法二

@Configuration
public class MvcConfig implements WebMvcConfigurer {
    
    
    
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    
    
        registry.addResourceHandler("/myresources/**")
            .addResourceLocations("classpath:/static/images/headImage");
    }
}

在上面的代码中,我们使用 addResourceHandlers 方法来注册一个资源处理器,以便在 localhost:port/myresources/** 路径下访问静态资源。addResourceLocations 方法指定了静态资源的位置,这里我们将静态资源放在 classpath:/static/ 目录下。

方法二:使用 application.properties 文件

在您的 Spring Boot 应用程序的 application.properties 文件中,添加以下配置:

spring.mvc.static-path-pattern=/myresources/**
spring.resources.static-locations=classpath:/static/images/headImage

总的来说,使用 WebMvcConfigurer 和 application.properties 文件都可以实现通过虚拟路径访问项目中的静态资源。其中,使用 WebMvcConfigurer 更为灵活,可以在代码中动态配置虚拟路径和静态资源的位置,而使用 application.properties 文件更为简单,可以通过配置文件轻松实现访问静态资源。选择哪种方法取决于您的具体需求和喜好。

猜你喜欢

转载自blog.csdn.net/lzq2357639195/article/details/130771865