Есть ли способ проверить, является ли файл .TXT на основе строки base64 [дубликат] ⇐ C#

Место общения программистов C#
Anonymous
Есть ли способ проверить, является ли файл .TXT на основе строки base64 [дубликат]

Сообщение Anonymous »

В моем API я получаю base64 для файла, и теперь мне нужно проверить, принадлежит ли этот base64 текстовому файлу (.txt), пока я не нашел никакого решения.
Я нашел что-то подобное

Код: Выделить всё

public static string GetFileExtension(string base64String)
{
var data = base64String.Substring(0, 5);

switch (data.ToUpper())
{
case "IVBOR":
return "png";
case "/9J/4":
return "jpg";
case "AAAAF":
return "mp4";
case "JVBER":
return "pdf";
case "AAABA":
return "ico";
case "UMFYI":
return "rar";
case "E1XYD":
return "rtf";
case "U1PKC":
return "txt";
case "MQOWM":
case "77U/M":
return "srt";
default:
return string.Empty;
}
}
Но в случае файла .txt этот подход не работает. Каждый раз, когда я загружаю файл .txt и создаю для этого файла base64, первые пять символов почти всегда разные.
Я также попробовал преобразовать массив base64 в массив byte[] и взял подпись заголовка файла, как это делается для файлов jpg
Например

Код: Выделить всё

var file = Convert.FromBase64String(base64String)

private static readonly byte[] JPG = { 255, 216, 255 };

if (file.Take(3).SequenceEqual(JPG))
{
mime = "image/jpeg";
}
Но опять же, для файлов .txt подпись заголовка файла каждый раз была разной. Мне было интересно, разрешима ли эта проблема вообще?
Обратите внимание: у меня есть только base64, нет расширения файла или другой информации, и я не могу использовать сторонние библиотеки.

Подробнее здесь: https://stackoverflow.com/questions/791 ... e64-string

Вернуться в «C#»