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)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!