• 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版本都不太一样。

    道法自然
  • 相关阅读:
    cocos2dx-lua捕获用户touch事件的几种方式
    Java并发编程之闭锁CountDownLatch简单介绍
    opencv视频播放
    完全备份、差异备份以及增量备份的区别
    如何实现文件增量同步——算法
    Oracle提示“资源正忙,需指定nowait”的解决方案
    oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT
    一次oracle大量数据删除经历
    rownum的使用-分页
    sql语句分页多种方式ROW_NUMBER()OVER
  • 原文地址:https://www.cnblogs.com/jiduoduo/p/14765398.html
Copyright © 2020-2023  润新知