当前位置:   article > 正文

Java判断上传文件是否重复_java multipartfile 是否唯一

java multipartfile 是否唯一

近期的项目中接到一个需求,文件上传时,如果是重复文件,直接将文件路径复制一份,不去真的上传。

背景:
文件服务器选择的是Fastdfs,数据库中有一个对应的File表保存文件存储路径以及MD5值。

思路:
要判断文件是否重复,就需要对每次上传的文件计算MD5值,上传前通过查询文件库中是否存在该MD5值,来判断是选择上传还是直接复制已存在的文件路径。

方法一:
使用org.apache.commons.codec.digest.DigestUtils类,一行代码搞定。

// 获取上传文件的MD5值
String md5 = DigestUtils.md5Hex(file.getBytes());
// 判断该文件是否在文件服务器上存在
List<String> filepathList = fileService.FileMd5IsExit(md5);
// 存放文件路径
String path = null;
if (CollectionUtils.isNotEmpty(filepathList)) {
	path = filepathList.get(0);
} else {
	// 文件上传
	path = fileStore.saveFile(file.getBytes(), extension);
}              
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

方法二:
java.security.MessageDigest java自带的加密类

// 获取上传文件的MD5值
InputStream inputStream = file.getInputStream();
byte[] buffer = new byte[1024];
int length = -1;
while ((length = inputStream.read(buffer, 0, 1024)) > 0) {
	messageDigest.update(buffer, 0, length);
 }
inputStream.close();
String md52 =  new BigInteger(1, messageDigest.digest()).toString(16);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

经验证,两种方式加密的结果一样。
md5加密

总结:
两种方案均可以实现需求,我个人倾向于选择方案一,简单。


------------本文结束感谢您的阅读------------
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/871589?site
推荐阅读
相关标签
  

闽ICP备14008679号