从 Spring MultipartFile 获取正确的文件大小

man*_*ish 2 spring spring-mvc

如何从中找到正确的文件大小org.\xe2\x80\x8bspringframework.\xe2\x80\x8bweb.\xe2\x80\x8bmultipart.\xe2\x80\x8bMultipartFile

\n\n
double bytes = m.getSize();\ndouble kilobytes = (bytes / 1024);\ndouble megabytes = (kilobytes / 1024);     \n System.out.println(megabytes);\n
Run Code Online (Sandbox Code Playgroud)\n\n

但它没有给出正确的尺寸。

\n\n

这里m.getSize()返回 2264855 但使用此方法它给出的文件大小约为 2MB,但我的文件系统中的实际大小是 8MB

\n\n
private HashMap add(@RequestParam( value = "files", required = false) MultipartFile[] mPartFile){\n\n    if(mPartFile != null && mPartFile.length>0){\n        for(MultipartFile m:mPartFile){\n            if(!CoreServices.isSupportedFile(m.getContentType())){\n                hm.put("status", MConstants.OPERATION_FAILED);\n                hm.put("reason", "File: "+m.getOriginalFilename()+" is not supported. Upload only jpeg, png, gif image files.");\n                return hm;                \n            }\n            long size = m.getSize();\n            if( size> MConstants.MAX_ALLOWED_FILE_SIZE){\n                hm.put("status", MConstants.OPERATION_FAILED);\n                hm.put("reason", "File: "+m.getName()+" is not acceptable, its size is more than 5MB.");\n                return hm;                \n            }            \n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这里的值MAX_ALLOWED_FILE_SIZE50000005MB限制

\n

小智 5

您正在使用getSize()MultipartFile 方法,我认为该方法以二进制形式返回字节大小。
因此,将其转换为 MB 单位,您必须file.getSize()乘以0.00000095367432。这将为您提供以 MB 为单位的大小。您可以在这里验证。

我正在使用相同的。我可以看到 Windows 中文件的大小为 18.9 KB,这是实际大小而不是磁盘上的大小。就我而言,我需要以 KB 为单位的信息,因此我将其乘以 0.0009765625,结果返回 18.9462890625 KB,这接近文件的大小,可能是 Windows 将其四舍五入。

我相信乘以file.getSize()0.00000095367432起作用。