Как я могу вычислить контрольную сумму объекта IFormFile
У меня есть файл объекта в виде IFormFile
, Мне нужно рассчитать контрольную сумму этого файла. Как я могу это сделать.
public string FindChecksum (IFormFile file){
// How to calculate the checkSum
return "THE CHECKSUM";
}
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")));
}
}
Другой вариант, на всякий случай, если кто-то сочтет полезным:
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;
}