java 获取上传文件的md5,[SpringBoot]获取上传文件的MD5值

引用Java计算文件MD5值(支持大文件)的方法;

文件上传对于互联网行业中是一个高频的场景;

Spring Boot 利用 MultipartFile 的特性来接收和处理上传的文件;

认为:上传图片时将图片的MD5特征值作为文件名,会减少空间的占用。

MultipartFile 的对象 可以使用 MD5.calcMD5(file.getInputStream())

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.nio.file.Files;

import java.nio.file.StandardOpenOption;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

public class MD5 {

private static final char[] hexCode = "0123456789ABCDEF".toCharArray();

// 文件类取MD5

public static String calcMD5(File file){

try (InputStream stream = Files.newInputStream(file.toPath(), StandardOpenOption.READ)) {

return calcMD5(stream);

}catch (IOException e) {

e.printStackTra

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现文件上传去重可以考虑以下步骤: 1. 在文件上传时,获取文件的MD5(或其他唯一标识符),并存储到数据库中。 2. 在上传新文件时,先计算文件的MD5,然后查询数据库中是否已存在该MD5的记录。 3. 如果存在,则表示文件已存在,不需要再次上传;如果不存在,则可以执行上传操作,同时将MD5存储到数据库中。 以下是一个示例代码: ```java @Service public class FileService { @Autowired private FileRepository fileRepository; // 上传文件 public void uploadFile(MultipartFile file) throws IOException { String md5 = DigestUtils.md5Hex(file.getInputStream()); // 计算文件MD5 if (fileRepository.findByMd5(md5) != null) { throw new RuntimeException("文件已存在,不需要再次上传!"); } // 执行上传操作,保存文件到服务器 // ... // 保存文件MD5到数据库 FileEntity fileEntity = new FileEntity(); fileEntity.setName(file.getOriginalFilename()); fileEntity.setMd5(md5); fileRepository.save(fileEntity); } } @Entity public class FileEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String md5; // getter/setter方法 } @Repository public interface FileRepository extends JpaRepository<FileEntity, Long> { FileEntity findByMd5(String md5); } ``` 在上述示例代码中,通过使用Spring Data JPA实现了文件上传去重功能。在上传文件时,先计算文件的MD5,然后查询数据库中是否已存在该MD5的记录。如果存在,则表示文件已存在,不需要再次上传;如果不存在,则可以执行上传操作,同时将MD5存储到数据库中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值