This commit is contained in:
Alexander
2022-12-03 14:04:02 +03:00
parent f0acfce2f3
commit f844787c26
13 changed files with 447 additions and 105 deletions

View File

@@ -0,0 +1,71 @@
using System.Security.Cryptography;
using Microsoft.AspNetCore.Http;
using MimeKit;
namespace anbs_cp.Classes;
/// <summary>
/// Класс -- расширение для класса File
/// </summary>
public static class FileExtension
{
/// <summary>
/// Получение md5-хэша файла.
/// Взято с https://stackoverflow.com/a/24031467/16469671
/// </summary>
/// <param name="fileName">Имя файла</param>
/// <returns>Массив хэша</returns>
public static byte[] Hash (string fileName)
{
using MD5 md5 = MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(fileName);
byte[] result = md5.ComputeHash(inputBytes);
return result;
}
/// <summary>
/// Получение md5-хэша загружаемого файла.
/// Взято с https://stackoverflow.com/a/67081012/16469671
/// </summary>
/// <param name="file">Загружаемый файл</param>
/// <returns>Массив хэша</returns>
public static byte[] Hash (IFormFile file)
{
using MD5 md5 = MD5.Create();
using StreamReader streamReader = new(file.OpenReadStream());
return md5.ComputeHash(streamReader.BaseStream);
}
/// <summary>
/// Получение md5-хэша файла и вывод в строке.
/// </summary>
/// <param name="fileName">Имя файла</param>
/// <returns>Срока с хэшем файла</returns>
public static string HashString (string fileName) => Convert.ToHexString(Hash(fileName));
/// <summary>
/// Получение md5-хэша файла и вывод в строке.
/// </summary>
/// <param name="file">Загружаемый файл</param>
/// <returns>Срока с хэшем файла</returns>
public static string HashString (IFormFile file) => Convert.ToHexString(Hash(file));
/// <summary>
/// Получает MIME-тип файла
/// </summary>
/// <param name="filename">Имя файла</param>
/// <returns>MIME-тип файла</returns>
public static string MIMEType (string filename) =>
MimeTypes.GetMimeType(filename);
/// <summary>
/// Получает MIME-тип файла
/// </summary>
/// <param name="file">Загружаемый файл</param>
/// <returns>MIME-тип файла</returns>
public static string MIMEType (IFormFile file) =>
file.ContentType;
}