如何计算IFormFile对象的校验和

时间:2018-10-21 05:52:55

标签: c# iformfile

我有一个IFormFile形式的文件对象。我需要计算该文件的校验和。我该怎么办。

public string FindChecksum (IFormFile file){

  // How to calculate the checkSum

  return "THE CHECKSUM";
}

2 个答案:

答案 0 :(得分:2)

我会做这样的事情。

我假设您从IFromFile文件参数中获取数据。

public IActionResult IndexPost(IFormFile file)
        {
            Stream st =  file.OpenReadStream();
            MemoryStream mst = new MemoryStream();
            st.CopyTo(mst);            
            return Content(ToMD5Hash(mst.ToArray()));
        }       

        public static string ToMD5Hash(byte[] bytes)
        {
            if (bytes == null || bytes.Length == 0)
                return null;

            using (var md5 = MD5.Create())
            {
                return string.Join("", md5.ComputeHash(bytes).Select(x => x.ToString("X2")));
            }
        }

答案 1 :(得分:0)

另一种选择,以防万一有人觉得有用:

public string CreatePackage(string packageType, IFormFile package)
{
    var hash = "";
    using (var md5 = MD5.Create())
    {
        using (var streamReader = new StreamReader(package.OpenReadStream()))
        {
              hash = BitConverter.ToString(md5.ComputeHash(streamReader.BaseStream)).Replace("-", "");
        }
    } 
    return hash;   
}