图片上传成功但是访问一直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 文件更为简单,可以通过配置文件轻松实现访问静态资源。选择哪种方法取决于您的具体需求和喜好。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值