您的位置:

multipartfile获取文件大小详解


一、multipartfile概述

  MultipartFile是Spring框架中用于表示上传文件的对象,支持多种文件格式的处理,包括二进制、文本、视频、音频等。 在Spring中通过MultipartFile进行文件上传操作,对于非常常见的文件上传场景HasFileUpload组件必不可少。

二、multipartfile获取文件大小方法

1.使用getSize()

  MultipartFile提供getSize()方法来获取上传文件大小,该方法返回文件字节数。 示例如下:

    public long getFileSize(MultipartFile file) {
        return file.getSize();
    }

2.使用getBytes()

  MultipartFile提供getBytes()方法,该方法会将文件内容读入内存数组中,并返回该数组的大小。 示例如下:

    public long getFileSize(MultipartFile file) {
        return file.getBytes().length;
    }

3.使用getInputStream()

  getInputStream()方法返回文件输入流,可以通过字节流一次读取计算文件大小。 示例如下:

    public long getFileSize(MultipartFile file) throws IOException {
        InputStream inputStream = file.getInputStream();
        byte[] buffer = new byte[1024];
        int len;
        int size = 0;
        while ((len = inputStream.read(buffer)) != -1) {
            size += len;
        }
        return size;
    }

三、multipartfile获取文件大小注意事项

1.单位转换

  文件大小获取到的是文件的字节数,一般情况下需要将其转换为更人性化的单位大小,比如KB、MB等。 示例如下:

    public String getFileSize(MultipartFile file) {
        long size = file.getSize();
        DecimalFormat df = new DecimalFormat("#.00");
        String fileSizeString;
        if (size < 1024) {
            fileSizeString = df.format((double) size) + "B";
        } else if (size < 1048576) {
            fileSizeString = df.format((double) size / 1024) + "KB";
        } else if (size < 1073741824) {
            fileSizeString = df.format((double) size / 1048576) + "MB";
        } else {
            fileSizeString = df.format((double) size / 1073741824) + "GB";
        }
        return fileSizeString;
    }

2.文件大小限制

  在实际应用中,上传的文件大小往往需要进行限制,防止上传过大的文件导致服务器崩溃或影响系统性能。可以通过配置Spring MVC的multipartResolver来实现。 示例如下:

    @Bean
    public MultipartResolver multipartResolver() {
        CommonsMultipartResolver resolver = new CommonsMultipartResolver();
        resolver.setMaxUploadSize(10000000);
        return resolver;
    }

  上述代码表示文件上传最大限制大小为10MB。