2010-10-19 4 views
1

У меня есть данные, которые поступают через поток байтов. Я хочу определить его тип файла, чтобы я знал, как его разобрать. В настоящее время меня беспокоит только HTML или изображения, все остальное можно отбросить.Определить тип файла из данных?

Что такое эффективный метод дифференциации между двумя? И что, если я хочу расширить это, чтобы включить другие типы файлов?

+0

Возможный дубликат [Использование .NET. Как вы можете найти тип mime файла на основе сигнатуры файла, а не расширения. ] (http://stackoverflow.com/questions/58510/using-net-how-can-you-find-the-mime-type-of-a-file-based-on-the-file-signature) –

+0

Look до стандартов формата и посмотреть, как они себя идентифицируют. –

+0

См. [Этот вопрос] (http://stackoverflow.com/questions/58510/using-net-how-can-you-find-the-mime-type-of-a-file-based-on-the-file -сигнал) для решения. – Onkelborg

ответ

1

This статья stackoverflow обсуждает ту же проблему и помечена Python (это не имеет ничего общего с языками программирования). Они упоминают статью this о подписях типа файла (на самом деле не подписи, а общее начальное магическое число для известных типов файлов). По соображениям безопасности я бы рекомендовал получать поток из надежного источника, только если вы сделаете этот контроль своей логики приложений нетривиальным способом.

Кроме того, поскольку вы просто проверяете, является ли файл html или двоичным (на данный момент), вы можете проверить наличие 0 в байтовом потоке (байт, а не символ) или просто любой незаконный html-символ (например, 0x1).

Смежные вопросы