springboot实现后台上传图片(工具类)

 更新时间:2021年09月10日 15:31:03   作者:睡觉觉啦  
这篇文章主要为大家详细介绍了springboot实现后台上传图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了springboot实现后台上传图片的具体代码,供大家参考,具体内容如下

1.先配置启动类

继承WebMvcConfigurer

重写方法

@SpringBootApplication
//@MapperScan("com.example.demo.Mapper")
public class DemoApplication implements WebMvcConfigurer {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);

    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry){
        /*
            addResoureHandler:指的是对外暴露的访问路径
            addResourceLocations:指的是内部文件放置的目录
        */
        registry.addResourceHandler("/imctemp-rainy/**").addResourceLocations("file:D:/image");
    }
}

2.添加一个UploadUtil文件上传工具类

public class UploadUtil {
    //源文件名
    private String originalFilename;

    //源文件后缀名
    private String suffix;

    //存入数据库里的tomcat虚拟路径
    private String dbPath;

    //文件大小
    private long size;

    //实际存储路径
    private String realPath;

    /**
     * 文件上传工具类
     * @param attach
     * @param request
     * @param uploader 文件上传者
     * @return
     */
    public boolean doUpload(MultipartFile attach, HttpServletRequest request, String uploader){

        if(!attach.isEmpty()){
            originalFilename = attach.getOriginalFilename();
            System.out.println("==>上传的文件名:"+originalFilename);

            suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            System.out.println("==>上传的文件后缀名:"+suffix);

            size = attach.getSize();
            System.out.println("==>上传文件的大小:"+size);

            String currentFilename = System.currentTimeMillis()+ UUID.randomUUID().toString() + suffix;
            System.out.println("==>存储的上传文件名:"+currentFilename);

            realPath = "D:/image/"+uploader ;
            System.out.println("==>上传文件保存的真实路径:"+realPath);

            File targetFile = new File(realPath, currentFilename);
            if(!targetFile.exists()){
                targetFile.mkdirs();
            }

            try{
                attach.transferTo(targetFile);
            }catch (Exception e){
                e.printStackTrace();
                return false;
            }
            realPath = realPath + "/" + currentFilename;
//            dbPath =  request.getContextPath() + "/" + uploader + "/" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + "/" + currentFilename;
            dbPath = "/" + uploader + "/" + currentFilename;
            return true;
        }else{
            return false;
        }
    }
    public String getUploadFile(){
        return dbPath;
    }
}

其中关于路径都需要改成自己存放图片的路径

3.Controller层

@RestController
public class UserPhotoController {

    @RequestMapping(value = "/upload",method = RequestMethod.POST)
    @ResponseBody
    public String testUpload(@RequestParam("file") MultipartFile file, HttpServletRequest request) {

        UploadUtil uploadUtil = new UploadUtil();
        String fileName = "";
        if (uploadUtil.doUpload(file, request, "uploadImg")) {
            fileName = uploadUtil.getUploadFile();
        } else {
            fileName = "file";
        }

        return fileName;
    }
}

完成。
附上RunApi接口测试工具测试过程(测试工具大同小异都是差不多步骤(如postman))

Headers:

注意这里的Headers部分不要写任何东西。
如果之前是有Content-Type头信息, 那么就会上传失败.

参数选择form-data

key:后台规定的接收文件的名称参数(切记不是你传的图片名称)
(比如我是file)

key的格式选择为File

value:自动变成 选择文件

点击发送

可以发现-上传图片成功(存到了你设置的路径中自动创建upload文件夹)
控制台也输出了你上传的图片信息

ok
大功告成

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java 十大排序算法之冒泡排序刨析

    Java 十大排序算法之冒泡排序刨析

    冒泡排序是一种简单的排序算法,它也是一种稳定排序算法。其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换。一直重复这个过程,直到没有任何两个相邻元素可以交换,就表明完成了排序
    2021-11-11
  • java实现五子棋程序

    java实现五子棋程序

    这篇文章主要为大家详细介绍了java实现五子棋程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • springboot CommandLineRunner接口实现自动任务加载功能

    springboot CommandLineRunner接口实现自动任务加载功能

    这篇文章主要介绍了springboot CommandLineRunner接口实现自动任务加载功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • RabbitMQ幂等性与优先级及惰性详细全面讲解

    RabbitMQ幂等性与优先级及惰性详细全面讲解

    关于MQ消费者的幂等性问题,在于MQ的重试机制,因为网络原因或客户端延迟消费导致重复消费。使用MQ重试机制需要注意的事项以及如何解决消费者幂等性与优先级及惰性问题以下将逐一讲解
    2022-11-11
  • Java Spring框架创建项目与Bean的存储与读取详解

    Java Spring框架创建项目与Bean的存储与读取详解

    本篇文章将介绍Spring项目的创建,IDEA国内源的配置以及Bean的存储与读取,所谓的Bean其实就是对象的意思,更详细地说Spring Bean是被实例的,组装的及被Spring 容器管理的Java对象
    2022-07-07
  • java实现ThreadLocal线程局部变量的实现

    java实现ThreadLocal线程局部变量的实现

    本文主要介绍了java实现ThreadLocal线程局部变量的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Java异常处理之try...catch...finally详解

    Java异常处理之try...catch...finally详解

    今天小编就为大家分享一篇关于Java异常处理之try...catch...finally详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • IDEA2023创建MavenWeb项目并搭建Servlet工程的全过程

    IDEA2023创建MavenWeb项目并搭建Servlet工程的全过程

    Maven提供了大量不同类型的Archetype模板,通过它们可以帮助用户快速的创建Java项目,这篇文章主要给大家介绍了关于IDEA2023创建MavenWeb项目并搭建Servlet工程的相关资料,需要的朋友可以参考下
    2023-10-10
  • 详解spring注解式参数校验

    详解spring注解式参数校验

    本篇文章主要介绍了详解spring注解式参数校验,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java中jdk1.8和jdk17相互切换实战步骤

    Java中jdk1.8和jdk17相互切换实战步骤

    之前做Java项目时一直用的是jdk1.8,现在想下载另一个jdk版本17,并且在之后的使用中可以进行相互切换,下面这篇文章主要给大家介绍了关于Java中jdk1.8和jdk17相互切换的相关资料,需要的朋友可以参考下
    2023-05-05

最新评论