一、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。