文章HTML代码翻译于地址:https://www.cnblogs.com/linyihai/p/7040786.html

          文件MD5有啥用?

                 文件上传时会上传文件的信息此时将文件的md5上传,服务器中存储这个md5值,并存储这个md5值所对应的已上传字节长度,比如未上传对应为0,已上传对应为-1,已上传200字节就对应200,这个上传的时候可以匹配到这个文件在服务器中的状态,方便做断点续传,只要源文件没有更改,即使换个名字,换个账户都可以在服务器找到对应的文件,所以当服务器中有已经上传完毕的此文件时,别人再上传这个文件就可以实现秒传。

          下面代码实现HTML选择文件获取MD5值、JAVA根据文件地址获取文件MD5值。

1、HTML代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form id="fileupload" action="" method="POST" enctype="multipart/form-data">
<div>
<div>
添加文件
<input type="file" name="" id="fileinput">
</div> <progress class='progressbar' value="0" max="100" style='width:500px;margin-top:20px'></progress>
<div style='margin-top:20px'>
<span id="handler_info" ></span>
</div>
</div>
</form>
<!-- https://github.com/satazor/js-spark-md5 -->
<script src="spark-md5.min.js" type="text/javascript"></script>
<script>
function get_filemd5sum(ofile) {
var file = ofile;
var tmp_md5;
var blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice,
// file = this.files[0],
chunkSize = 8097152, // Read in chunks of 2MB
chunks = Math.ceil(file.size / chunkSize),
currentChunk = 0,
spark = new SparkMD5.ArrayBuffer(),
fileReader = new FileReader(); fileReader.onload = function(e) {
// console.log('read chunk nr', currentChunk + 1, 'of', chunks);
spark.append(e.target.result); // Append array buffer
currentChunk++;
var md5_progress = Math.floor((currentChunk / chunks) * 100); console.log(file.name + " 正在处理,请稍等," + "已完成" + md5_progress + "%");
var handler_info = document.getElementById("handler_info");
var progressbar = document.getElementsByClassName("progressbar")[0];
handler_info.innerHTML=file.name + " 正在处理,请稍等," + "已完成" + md5_progress + "%"
progressbar.value =md5_progress;
if (currentChunk < chunks) {
loadNext();
} else {
tmp_md5 = spark.end();
console.log(tmp_md5)
handler_info.innerHTML = file.name + "的MD5值是:" + tmp_md5;
}
}; fileReader.onerror = function() {
console.warn('oops, something went wrong.');
}; function loadNext() {
var start = currentChunk * chunkSize,
end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize;
fileReader.readAsArrayBuffer(blobSlice.call(file, start, end));
}
loadNext();
} var uploadfile = document.getElementById('fileinput')
uploadfile.onchange = function(e){
var file = this.files[0];
if(!file) {
alert('请选择文件!');
return false;
}
get_filemd5sum(file)
}
</script>
</body>
</html>

2、JAVA代码

/**
* 获取文件的md5
* @param filePath 文件地址
* @param fileName 文件名
* @return
*/
public static String getFileMd5Value(String filePath, String fileName){
File file = new File(filePath + File.separator + fileName);
if(!file.exists() || !file.isFile()){
return "";
}
byte[] buffer = new byte[2048];
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
FileInputStream in = new FileInputStream(file);
while(true){
int len = in.read(buffer,0,2048);
if(len != -1){
digest.update(buffer, 0, len);
}else{
break;
}
}
in.close(); byte[] md5Bytes = digest.digest();
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++) {
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16) {
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
} catch (Exception e) {
e.printStackTrace();
return "";
}
} public static void main(String[] args) {
System.out.println(Snippet.getFileMd5Value("C:\\Users\\Administrator\\Desktop", "test.txt"));
}

获取文件MD5值(JS、JAVA)的更多相关文章

  1. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  2. 基于js-spark-md5前端js类库,快速获取文件Md5值

    js-spark-md5是歪果仁开发的东西,有点多,但是我们只要一个js文件即可,具体类包我存在自己的oschina上,下载地址:https://git.oschina.net/jianqingwan ...

  3. QT 获取文件MD5值

    /* 方法1 */ QFile theFile(fileNamePath); theFile.open(QIODevice::ReadOnly); QByteArray ba = QCryptogra ...

  4. C# 获取文件MD5值的方法

    可用于对比文件是否相同 /// <summary> /// 获取文件MD5值 /// </summary> /// <param name="fileName& ...

  5. JAVA中获取文件MD5值的方法

    1 DigestUtils.md5Hex(new FileInputStream(path)); 如果你只需要使用标准的MD5,其实一行代码就够了,JAVA自带的commons-codec包就提供了获 ...

  6. js获取文件MD5值

    原文链接:http://www.jianshu.com/p/940a9226fbbd   要在web页面中计算文件的md5值,还好这个项目是只需兼容现代浏览器的,不然要坑死了. 其实对文件进行md5, ...

  7. Mac上获取文件md5 值

    mac 上获取一个文件的md5值如下 在terminal 上输入下面命令行即可: 方法一: //备注 AccountPassword/check 是全路径 也可以相对路径,我这里是相对路径,用来测试用 ...

  8. ios获取文件MD5值

    一般我们在使用http或者socket上传或者下载文件的时候,经常会在完成之后经行一次MD5值得校验(尤其是在断点续传的时候用的更 多),校验MD5值是为了防止在传输的过程当中丢包或者数据包被篡改,在 ...

  9. 获取文件Md5值

    private static string GetFileMD5(string filePath) { string _md5Value = string.Empty; try { if (Syste ...

随机推荐

  1. skLearn 支持向量机

    ## 版权所有,转帖注明出处 章节 SciKit-Learn 加载数据集 SciKit-Learn 数据集基本信息 SciKit-Learn 使用matplotlib可视化数据 SciKit-Lear ...

  2. Java 第一次课堂测试总结。

    Java 第一次课堂测试总结. 昨天参加了JAVA的开学测试,课上没有完成计算基点的功能,以下是修改完成后的代码.  首先是ScoreInformation类来存储学生信息. //信1805-1 王正 ...

  3. Promise 练习

    import { ModelClass } from "engine/injector/Injector"; import { Inject } from "core/i ...

  4. silicon射频发射器 SI4010-C2-GSR

    Si4010是第一款系统级的自动天线调谐发射器,具有专利的调谐电路,可自动微调天线以达到最佳效果,以及恒定的输出功耗.PCB环形天线的制造公差和环境改变,将会引起发射频率的变化,从而可能导致天线的效率 ...

  5. webservice 的简单实现

    1.什么是webservice: 服务端整出一些资源让客户端访问(获取数据) 一个跨语言.跨平台的规范2.作用:跨平台调用.跨语言调用.远程调用 3.什么时候使用webservice: 1.新旧系统之 ...

  6. Angular 后台报错记录

    异常信息:ERROR TypeError: Cannot read property 'xxxx' of undefined 异常原因:"xxx"属性未定义,引发异常的原因可能是H ...

  7. 尝试用kotlin做一个app(二)

    导航条 我想实现的效果是这样的 类似于ViewPager的效果,子类导航页面可以滑动,当滑动某个子类导航页面,导航线会平滑地向父类导航移动 ·添加布局 <!--导航分类:编程语言/技术文档/源码 ...

  8. 18 12 06 sql 的 基本语句 查询 条件查询 逻辑运算符 模糊查询 范围查询 排序 聚合函数 分组 分页 连接查询 自关联 子查询

    -- 数据的准备 -- 创建一个数据库 create database python_test charset=utf8; -- 使用一个数据库 use python_test; -- 显示使用的当前 ...

  9. spark与Scala版本对应问题

    在阅读一些博客和资料中,发现安装spark与Scala是要严格遵守两者的版本对应关系,如果版本不对应会在之后的使用中出现许多问题. 在安装时,我们可以在spark的官网中查到对应的Scala版本号,如 ...

  10. VMware CentOS 设置IP地址

    VMware CentOS 设置IP地址 1. 设置虚拟机网络编辑器:参考:https://www.cnblogs.com/1285026182YUAN/p/10440443.html 2. Cent ...