Spring Boot文件上传到MySql数据库(二进制)以及读取

  • Post author:
  • Post category:mysql


首先在数据库建一张表

在这里插入图片描述

数据库我这里用的是MySql,数据类型是longblob,最大容量为4G。

然后新建实体类

在这里插入图片描述

用byte[]存储二进制

控制器

 @RequestMapping("/upload")
    public String upload( @RequestParam("file") MultipartFile file,HttpServletRequest request) throws IOException {
        if(file.isEmpty()){
            return null;
        }

        //根据时间戳产生新的文件名
        String fileName = System.currentTimeMillis()+file.getOriginalFilename();

        byte[] b=file.getBytes();

        Image image=new Image(fileName,b);
        String path=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+"/images/download/"+fileName;
        imageService.save(image);
        return  path;
    }

简单说就是将file转成二进制存储到数据库,再返回获取文件的路径

所以需要我们写一个方法去获取图片

@RequestMapping(value = "/images/{id}", method = RequestMethod.GET)
    public ResponseEntity<byte[]> getImage(@PathVariable("id")String id) {
        Image image = imageService.getById(id);

        return ResponseEntity.ok().contentType(MediaType.IMAGE_JPEG).body(image.getImage());
    }

方法也很简单,其实就是把文件读出来,这里的MediaType类型支持很多种



版权声明:本文为weixin_43722048原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。