MultipartFile实现文件上传和下载(Springboot)

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 MultipartFile实现文件上传和下载(Springboot),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

        MultipartFile是springMVC提供简化上传操作的工具类。在不使用框架之前,都是使用原生的HttpServletRequest来接收上传的数据,文件是以二进制流传递到后端的,然后需要我们自己转换为File类。使用了MultipartFile工具类之后,我们对文件上传的操作就简便许多了。

MultipartFile方法详解

String getName() 返回参数的名称
String getOriginalFilename();  获取源文件名称
String getContentType() 返回文件的内容类型
isEmpty() 判断是否为空,或者上传的文件是否有内容
Long getSize() 返回文件大小 以字节为单位
byte[] getBytes() 将文件内容转化成一个byte[] 返回
InputStream getInputStream() throws IOException;返回InputStream读取文件的内容

transferTo(File dest) 用来把 MultipartFile 转换换成 File

        文件上传代码java后端代码如下,首先取出MulipartFile的源文件名,拼接字符串构成File文件的磁盘路径,然后通过multipartFile的transferTo方法转化成File文件,后将该文件的文件名,文件大小,磁盘存储路径存放到数据库中。至此文件上传基本完成。

 @RequestMapping("/test2/imp")
    @ResponseBody
    public String file(@RequestParam("file") MultipartFile multipartFile) throws Exception {
        File file=new File("D:\\test\\"+multipartFile.getOriginalFilename());
        if(multipartFile.isEmpty()){
            throw new Exception("文件不能为空");
        }
        String filename = multipartFile.getOriginalFilename();
        long size = multipartFile.getSize();
        multipartFile.transferTo(file);
        String absolutePath = file.getAbsolutePath();
        Myfile myfile=new Myfile();
        myfile.setName(filename);
        myfile.setPath(absolutePath);
        myfile.setSize(size);
        QueryWrapper<Myfile> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("name",filename);
        Myfile myfile1 = myfileMapper.selectOne(queryWrapper);
        if(myfile1==null)
            myfileMapper.insert(myfile);
        return "success";
    }

        文件下载java后端代码如下,首先根据文件名从数据库中取到文件的磁盘存储路径,然后取到该File文件,设置请求头内容将通过response.getOutputputStream方法将该二进制文件输出到浏览器上,通过浏览器下载。前端代码相对简单省略,可以参考elementplus组件upload实现前端设计。

@RequestMapping("test2/fileload")
    public String fileload(@RequestParam("filename")String filename, HttpServletResponse response) throws IOException {
        QueryWrapper<Myfile> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("name",filename);
        Myfile myfile = myfileMapper.selectOne(queryWrapper);
        File file=new File(myfile.getPath());
        response.setHeader("Content-Disposition", "attachment; filename=" + filename);
        response.setContentType("application/octet-stream");
        ServletOutputStream outputStream = response.getOutputStream();
        outputStream.write(FileUtil.readBytes(file));
        outputStream.close();
        return "success";

    }

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

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/143096.html

(0)

相关推荐

  • 阿里的职级划分 —- P8是什么概念

    导读:本篇文章讲解 阿里的职级划分 —- P8是什么概念,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    技术随笔 2023年2月22日
    00
  • 刷题笔记之六(扑克牌大小+最近公共祖先+求最大连续bit数+二进制插入)

    导读:本篇文章讲解 刷题笔记之六(扑克牌大小+最近公共祖先+求最大连续bit数+二进制插入),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    技术随笔 2023年2月4日
    00
  • Git系列之git tag

    勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

    导读:本篇文章讲解 Git系列之git tag,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    技术随笔 2023年5月8日
    00
  • 炫酷的vue登陆界面2.0

    导读:本篇文章讲解 炫酷的vue登陆界面2.0,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    技术随笔 2023年1月21日
    00
  • Java线程详解

    导读:本篇文章讲解 Java线程详解,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    技术随笔 2023年1月18日
    00
  • java 身份证号和手机号中间加* 工具类

    命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

    导读:本篇文章讲解 java 身份证号和手机号中间加* 工具类,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    技术随笔 2023年5月14日
    00
  • 位段-C语言

    导读:本篇文章讲解 位段-C语言,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    技术随笔 2023年2月8日
    00
  • Java基础三元运算符

    导读:本篇文章讲解 Java基础三元运算符,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    技术随笔 2023年2月1日
    00
  • 并查集模板+应用(图文并茂,保你看懂)

    追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

    导读:本篇文章讲解 并查集模板+应用(图文并茂,保你看懂),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    技术随笔 2023年4月9日
    00
  • Java:自定义maven骨架

    导读:本篇文章讲解 Java:自定义maven骨架,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    2023年2月7日
    00

发表回复

登录后才能评论