asp.net和js读取文件的MD5值的方法
前言
文件的md5值,即文件签名,为了验证文件的正确性,是否被恶意篡改等。每个文件有一个唯一的md5值。
最近公司开发的app文件包的校验就有用到文件md5值。
一、asp.net获取
①和上传文件一样,得到本地文件的集合,方法很多,我是用Ajax upload.js插件上传 在这里省略
②得到imgFile代码如下 sb.ToString()即为该文件的MD5值。
HttpPostedFile imgFile = context.Request.Files["imgFile"];//本地文件的集合 MD5 md5 = new MD5CryptoServiceProvider(); byte[] retVal = md5.ComputeHash(imgFile.InputStream); StringBuilder sb = new StringBuilder(); for (int i = 0; i < retVal.Length; i++) { sb.Append(retVal[i].ToString("x2")); } context.Response.Write(sb.ToString());
二、js获取文件的MD5
第一种方法获取文件MD5值得一个弊端是需要将文件流上传到服务端,当文件比较大的时候,读取会比较忙。所以后面从网上找到用js读取本地文件md5值得方法:
html代码
<input id="ChooseFile" type="file" value="上传文件"/>
<div id="log"></div>
js代码
<script src="http://cdn.rawgit.com/satazor/SparkMD5/master/spark-md5.min.js"></script> <script> var log = document.getElementById("log"); document.getElementById("ChooseFile").addEventListener("change", function () { var blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice, file = this.files[0], chunkSize = 2097152, // 将文件切割成2m读取 因为文件太大可能读取失败 chunks = Math.ceil(file.size / chunkSize), currentChunk = 0, spark = new SparkMD5.ArrayBuffer(), frOnload = function (e) { spark.append(e.target.result); currentChunk++; if (currentChunk < chunks)//判断是否读取完成 loadNext(); else log.innerHTML = spark.end().toUpperCase(); }; function loadNext() { var fileReader = new FileReader(); fileReader.onload = frOnload; var start = currentChunk * chunkSize, end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize; fileReader.readAsArrayBuffer(blobSlice.call(file, start, end)); }; loadNext();//调用 }); </script>
本文版权归作者(谢俊)和博客园所有,欢迎转载,转载请标明出处。
原文地址:http://www.cnblogs.com/net-xiejun/
完整源码下载:https://github.com/xiejun-net/weixin
公众账号:
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?