Springboot上传文件到Linux服务器

Springboot上传文件到Linux服务器jar打包方式不支持将文件动态写入文件,这时需要通过映射的方式将文件上传到映射某一个文件夹,通过映射获取文件,在页面显示。1.yml配置配置本地上传地址或者服务器地址,springboot项目可以通过映射获取文件,从而页面显示 注意:这里配置的地址一定要加一个”/”在最后面!!!!file:#服务器地址uploadurl:”/u01/upload/images/”#本地地址#localurl:”D:/springbootFile/upload/images/”

大家好,又见面了,我是你们的朋友全栈君。

jar打包方式不支持将文件动态写入文件,这时需要通过映射的方式将文件上传到映射某一个文件夹,通过映射获取文件,在页面显示。

1.yml配置

  • 配置本地上传地址或者服务器地址,springboot项目可以通过映射获取文件,从而页面显示
  • 注意:这里配置的地址一定要加一个”/”在最后面!!!!
file:
  #服务器地址
  uploadurl: "/u01/upload/images/"
  #本地地址
  #localurl: "D:/springbootFile/upload/images/"

2.上传方法

 

  • 获取配置文件中配置的文件存储路径,将图片存储到本地或者服务器,页面通过映射获取。
      @Value("${file.uploadurl}")
    private String uploadPath;

 @PostMapping("/fileUpload")
    @ApiOperation(value = "上传下载图片")
    public JsonResult filesUpload(@RequestParam("filesName") MultipartFile file,
                                             @RequestParam("mmsi") String mmsi) throws IOException {

        JsonResult result = new JsonResult();
        //如果文件夹不存在,创建
        File fileP = new File(uploadPath);

        if (!fileP.isDirectory()) {
            //递归生成文件夹
            fileP.mkdirs();
        }
        String fileName = "";
        if(file.getOriginalFilename().endsWith(".jpg")){
            fileName =String.format("%s.jpg",System.currentTimeMillis());
        }else if(file.getOriginalFilename().endsWith(".png")){
            fileName =String.format("%s.jpg",System.currentTimeMillis());
        }else if(file.getOriginalFilename().endsWith(".jpeg")){
            fileName =String.format("%s.jpeg",System.currentTimeMillis());
        }else if(file.getOriginalFilename().endsWith(".bmp")){
            fileName =String.format("%s.bmp",System.currentTimeMillis());
        }else{
            result.setSuccess(false);
            result.setCode("0");
            result.setMessage("图片格式不正确!,使用.jpg/.png/.bpm/.jpeg后缀的图片");
            return result;
        }
        file.transferTo(new File(fileP,fileName));
        //数据库存入地址
        cxShipDetailService.insertShipPic(mmsi,uploadPath+fileName,fileName);
        result.setSuccess(true);
        result.setCode("1");
        result.setMessage("上传图片成功!");
        return result;
    }

上传功能就到此结束了。那么肯定会问,上传了怎么获取图片呢?很简单,通过地址映射就可以获取了。

3.配置类

 

  • 配置映射路径,例如:页面请求的图片路径为(默认到static目录下):images/111.jpg,static目录下没有该目录文件,将通过映射的imges到本地或者服务器的存储中获取。
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 FileConfig   implements WebMvcConfigurer {

    @Value("${file.uploadurl}")
    private String  fileUrl;

    public void addResourceHandlers(ResourceHandlerRegistry register){
        register.addResourceHandler("/images/**").addResourceLocations("file:"+fileUrl);
    }
}

方式二:除了配置类还有另一种方式,那就是直接在配置文件配置spring的资源文件地址:

spring:
  mvc: 
    static-path-pattern: /image/**
  resources:
    #本地地址
    static-locations: file:D://test/
    #linux服务器地址
   #static-locations: file:/u01/upload/images/

但是通过方式二有弊端,如果配置了swagger你会发现不能打开swagger了,是因为默认资源位置已被映射,无法找到, 所以需要通过配置类指定资源位置


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 WebMvcConfig implements WebMvcConfigurer  {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");

    }

}

建议直接使用第一种方式!

效果:这里的imags对应配置类里面的获取地址。

Springboot上传文件到Linux服务器

Springboot上传文件到Linux服务器

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145073.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm安装python3.6_python安装教程

    pycharm安装python3.6_python安装教程Pycharm安装+python3.9+配置过程一、安装Pycharm+python3.9Pycharm官网下载:https://www.jetbrains.com/pycharm/download/#section=windows点击Community下的Download进行下载。Python3.9官网下载:https://www.python.org/点击Download下的python3.9.2进入:下拉至最下面,点击windowsem

    2022年8月27日
    3
  • pycharm git使用_pycharm上传github

    pycharm git使用_pycharm上传githubpycharm操作git一、git安装和使用​ 安装操作:https://www.cnblogs.com/ximiaomiao/p/7140456.html1.如何使用git将本地代码上传到远程仓库初始化gitinit查看当前仓库状态gitstatus将项目的文件添加到仓库中gitadd<文件名>gitadd.(上传所有文件)将add的文件commit到仓库gitcommit-m”备注”将本地仓库关联到远程仓库gi

    2022年8月25日
    6
  • 怎样解决栈溢出

    怎样解决栈溢出

    2021年11月14日
    46
  • lombok插件安装 idea 搜不到_浏览器flash插件安装

    lombok插件安装 idea 搜不到_浏览器flash插件安装Lombok官网ProjectLombok是一个java库,可以自动插入编辑器并构建工具,为您的java增添色彩。永远不要再写另一个getter或equals方法,使用一个注释,您的类具有一个功能齐全的构建器,自动化您的日志记录变量等等.需要下载的插件lombok.jar包(可去我那里下载lombok.jar)lombok插件sts或eclipse安装方法(下面为sts安装…

    2025年10月3日
    7
  • gearman c语言,Gearman分布式任务处理系统(一)基本介绍[通俗易懂]

    gearman c语言,Gearman分布式任务处理系统(一)基本介绍[通俗易懂]Gearman介绍Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用WebService的方式来处理此类集成问题,但不管采用何种风格的WebService,如RPC风格,或者REST风格,其本身都有一定的复杂性。相比之下…

    2025年6月9日
    4
  • java 汉字乱码_Java中文乱码问题

    java 汉字乱码_Java中文乱码问题一、MyEclipse下的java文件中文乱码问题(MyEclipse6.5):解决方法一:Window–àPreferences…–àGeneral–àContentTypes–àText–àJavaSourceFile中Defaultencoding改写成UTF-8(你所需的编码类型)然后Update,OK确定就可以了。二、1、编码编码比较常用的有:UTF-…

    2022年7月13日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号