1

我有一个形式为IFormFile. 我需要计算这个文件的校验和。我怎样才能做到这一点。

public string FindChecksum (IFormFile file){

  // How to calculate the checkSum

  return "THE CHECKSUM";
}
4

2 回答 2

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")));
            }
        }
于 2018-10-21T06:05:13.173 回答
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;   
}
于 2021-04-13T19:07:18.633 回答