SpringBoot 2.4与tomcat版本、图片上传访问不了

JDK

Spring Boot 从2.0开始就要求 Java 8 及其以上版本

 

Tomcat

一般开发中是没有感觉的,因为系统默认是自带tomcat的运行的

Servlet 容器

Spring Boot 能够支持下面的嵌入 Servlet 容器版本:

名字

Servlet 版本

Tomcat 9.0

4.0

发布到服务器上运行,就会出现各种各样的问题。

一般开始都是好好的,开始用的是tomcat8.5的版本,一切正常,运行良好。

但是到查看图片的时候,就出现问题了。

 

1、图片上传正常,服务器也有文件,运行也正常。

2、通过http来访问,就提示500错误

解决:

 1)虚拟路径 来重定向路径。

说明:这个重定向其实很简单,也就是说你访问 http://localhost:8080/images/1.jpg ==> Users/xxx/upload/1.jpg

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 设置虚拟路径,访问绝对路径下资源
 */
@Configuration
public class UploadConfig implements WebMvcConfigurer {

    @Value("${file.staticAccessPath}")
    private String staticAccessPath;
    @Value("${file.uploadFolder}")
    private String uploadFolder;
    
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + uploadFolder);
    }
}

这个文件在启动的时候就会被加载,用来处理。

application-dev.properties

# 上传的服务器上的映射文件夹
file.accessPath=/images/
#静态资源对外暴露的访问路径
file.staticAccessPath=/images/**
#实际文件存放位置 file.uploadFolder=/Users/xxx/upload/ ==》最后的这一个 / 不用少。

通过这一步的处理,本地是可以通过/images来访问实际的文件,但是到了服务器上就报错。

下面的兄弟着重说明:

https://blog.csdn.net/qq_39025156/article/details/90055132

 

 从错误的提示来看,是指少了方法,Servlet一想就是tomcat的问题。从提示中的UrlPath也可以看出重定向出了问题,因为没有这个方法。

 

 2)更换tomcat版本

从tomcat8.5换成tomcat9或更高版本。

 

总结:不同的spring boot版本对应的jdk, tomcat版本都不太一样。

 

posted @ 2021-05-13 17:19  jiduoduo  阅读(477)  评论(0编辑  收藏  举报