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/

微信開發群C#.NETWEB程序開發交流

完整源碼下載:https://github.com/xiejun-net/weixin

公眾賬號:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM