通过MultipartFile获取图片宽高

  1. MultipartFile转File再获取
        MultipartFile multipartFile = uploadReq.getFile(); // 获取请求传过来的MultipartFile
        String fileName = multipartFile.getOriginalFilename();
        String prefix=fileName.substring(fileName.lastIndexOf("."));
        try {
            File file = File.createTempFile(prefix, String.valueOf(System.currentTimeMillis())); // 创建临时文件
            FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file);
            BufferedImage bufferedImage =ImageIO.read(file); // 通过临时文件获取图片流
            if (bufferedImage == null) {
                // 证明上传的文件不是图片,获取图片流失败,不进行下面的操作
            }
            Integer width = bufferedImage.getWidth(); // 通过图片流获取图片宽度
            Integer height = bufferedImage.getHeight(); // 通过图片流获取图片高度
            // 省略逻辑判断
        } catch (Exception e) {
            // 省略异常操作
        }
  1. MultipartFile直接获取
    ImageIO源码
    ImageIO源码

通过源码可以看到ImageIO.read()除了通过File获取BufferedImage之外,也提供了通过InputStream来获取BufferedImage的方法,而MultipartFile本身也可以获取到InputStream。
于是有如下方法获取到文件的宽高:

        MultipartFile multipartFile = uploadReq.getFile(); // 获取请求传过来的MultipartFile
        try {
            BufferedImage bufferedImage =ImageIO.read(multipartFile.getInputStream()); // 通过MultipartFile得到InputStream,从而得到BufferedImage
            if (bufferedImage == null) {
                // 证明上传的文件不是图片,获取图片流失败,不进行下面的操作
            }
            Integer width = bufferedImage.getWidth();
            Integer height = bufferedImage.getHeight();
           // 省略逻辑判断
        } catch (Exception e) {
            // 省略异常操作
        }

注:json获取到InputStream并被消费之后貌似会出现流不能再次使用的情况,导致数据无法存储。但是此处MultipartFile获取到流并消费(即通过这个流获取到了宽高)后,MultipartFile能够被正常存储(已测试)。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值