Java获取文件的MD5,核心都是通过JAVA自带的MessageDigest类来实现。
获取文件MD5值主要分为三个步骤:
第一步获取文件的byte信息,
第二步通过MessageDigest类进行MD5加密,
第三步转换成16进制的MD5码值。

方案一

/**
* 获取上传文件的md5
* @param file
* @return
* @throws IOException
*/
public String getMd5(MultipartFile file) {
try {
//获取文件的byte信息
byte[] uploadBytes = file.getBytes();
// 拿到一个MD5转换器
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] digest = md5.digest(uploadBytes);
//转换为16进制
return new BigInteger(1, digest).toString(16);
} catch (Exception e) {
log.error(e.getMessage());
}
return null;
}

方案二

使用JAVA自带的commons-codec包,获取16进制MD5值的方法。
DigestUtils.md5Hex():提供三种类型(byte[]、InputStream、String)生成MD5

/**
* 获取上传文件的md5
* @param file
* @return
* @throws IOException
*/
public String getMd5(MultipartFile file) {
try {
byte[] uploadBytes = file.getBytes();
//file->byte[],生成md5
String md5Hex = DigestUtils.md5Hex(uploadBytes);
//file->InputStream,生成md5
String md5Hex1 = DigestUtils.md5Hex(file.getInputStream());
//对字符串生成md5
String s = DigestUtils.md5Hex("字符串");
return md5Hex ;
} catch (Exception e) {
log.error(e.getMessage());
}
return null;
}

JAVA获取MultipartFile文件的MD5的更多相关文章

  1. java获取classpath文件路径空格转变成了转义字符%20的问题

    java获取classpath文件路径空格转变成了转义字符%20的问题 这个问题很纠结,服务器的文件路径带有空格,空格被转化是%20了,悲剧就出现了 下面展示一段代码String path = get ...

  2. java 获取class文件所在路径

      java 获取class文件所在路径 CreateTime--2017年11月14日15:14:32 Author:Marydon 1.获取class文件所在路径(磁盘路径.绝对路径) // 获取 ...

  3. Java获取资源文件

    比如我们有以下目录 |--project |--src |--javaapplication |--Test.java |--file1.txt |--file2.txt |--build |--ja ...

  4. linux shell 命令获取字符串/文件的MD5值

    获取字符串的MD5值: 字符串“hello”的MD5: $ echo -n 'hello'|md5sum|cut -d ' ' -f1 得到的MD5值: 5d41402abc4b2a76b9719d9 ...

  5. java获取音频文件播放时长

    方法一: 在项目开发过程中,需要获取音视频文件时长.查询资料后发现 JAVE能够完美得到想要的结果,JAVE项目简介如下: The JAVE (Java Audio Video Encoder) li ...

  6. JAVA获取txt文件内容

    JAVA 读取txt文件内容 通常,我们可以直接通过文件流来读取txt文件的内容,但有时可能会出现乱码!此时只要设置一下文件字符编码即可. public class txttest { /** * 读 ...

  7. C# 获取一个文件的MD5值

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  8. JAVA 获取web文件的相对路径

    转自:http://wwwdd2315.blog.163.com/blog/static/66661889201091953350298/ 在JAVA文件中获取该项目的相对路径1.基本概念的理解 绝对 ...

  9. java获取当前文件路径的方法

    第一种: File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); ...

  10. java获取当前文件路径 [转]

    1.如何获得当前文件路径 常用: 字符串类型:System.getProperty("user.dir"); 综合: package com.zcjl.test.base; imp ...

随机推荐

  1. android gradle配置及编译command

    build.gradle apply plugin: 'com.android.application' android { compileSdkVersion rootProject.ext.and ...

  2. 【转载】ISTQB AL-TA/TTA连载系列06:白盒测试技术的精炼总结

    转载自:https://blog.csdn.net/iteye_13411/article/details/82158591 [概述] 白盒测试,有时候又称为基于结构的测试,特别适用于低级别的测试.根 ...

  3. Java 8 stream 做大于几的统计

    Map<String, Integer> marketplaceIdCountMap = amazonTemplateService .getAmazonTemplateList(quer ...

  4. HTTP请求报文(请求行,请求头,请求体)

    HTTP协议 1.简介 HTTP协议(Hyper Text Transfer Protocol,超文本传输协议),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的 ...

  5. go 死锁示例

    以下代码不会有任何打印.原因是:channel ch 在make 时是无缓冲区的channel.无缓冲区的channel 发送一个数据进入后需要等待这个数据被消耗才能继续发送下一个数据.然而getFr ...

  6. Angular+FileSaver实现导出(xlsx或ExcelJS)

    1.安装相关插件 npm install file-saver --savenpm install @types/file-saver --save-dev 一.xlsx(虽然强大,但是默认不支持改变 ...

  7. Unity多线程使用(线程池)

    1.在C#中使用线程池需要以下这个类库using System.Threading 2.开单个线程(unity程序停止前 线程一定要关闭) private Thread tempThread; voi ...

  8. ssh-add

    ssh-add -l https://www.jianshu.com/p/0c6719f33fb9 添加秘钥,而不是公钥

  9. 使用C++进行冒泡排序

    #include "pch.h" #include <iostream> using namespace std;手动输入10个数,进行冒泡排序 int main() ...

  10. IOS弹出系统键盘后,页面不恢复

    <script> var u = navigator.userAgent, app = navigator.appVersion var isIOS = !!u.match(/\(i[^; ...