md5 检查输入流而不保存为文件

vas*_*nta 3 java spring md5

我正在开发一个页面来上传文件。我正在使用 spring 框架 3 multipartFile。我只想保存这个上传的文件,如果它已经从服务器中的原始版本改变了。有没有办法在不将此上传的文件保存在临时位置的情况下进行 MD5 检查?

谢谢,瓦桑塔

kry*_*ger 5

您可以使用MultipartFile'sgetBytes()方法将内容读取为字节数组,然后:

byte[] uploadBytes = upload.getBytes();
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] digest = md5.digest(uploadBytes);
String hashString = new BigInteger(1, digest).toString(16);
System.out.println("File hash: " + hashString);
Run Code Online (Sandbox Code Playgroud)

但是,根据文档,该文件仍可能保存到临时文件夹中(但 Spring 会在之后对其进行清理):

文件内容要么存储在内存中,要么临时存储在磁盘上。