Получение расширения файла в FileUpload Control - PullRequest
5 голосов
/ 14 марта 2010

На данный момент я получаю расширение файла как:

string fileExt = System.IO.Path.GetExtension(filUpload.FileName);

Но если пользователь изменит расширение файла (например, пользователь может переименовать «test.txt» в «test.jpg»), я не смогу получить настоящее расширение. Какое решение?

Ответы [ 3 ]

5 голосов
/ 14 марта 2010

Похоже, вы спрашиваете, можете ли вы определить тип файла по его содержимому.

Большинство решений действительно пытаются использовать расширение файла, но существует слишком много различных типов файлов, чтобы их можно было надежно идентифицировать.

Большинство подходов используют первые несколько байтов файла, чтобы определить, какие они есть.

Здесь - один список, здесь другой.

Если вас беспокоит только текст против двоичного кода, см. этот ТАК вопрос и ответы.

См. этот SO ответ для проверки, является ли файл JPG - этот подход может быть расширен для использования других заголовков файла, как в первых двух ссылках в этом ответе.

1 голос
/ 14 марта 2010

Нет способа получить «реальное» расширение файла - реальное расширение файла, которое вы получаете из имени файла. Если содержимое файла является вашей проблемой, вы можете извлечь тип содержимого с помощью свойства .ContentType и убедиться, что это ожидаемый тип содержимого, например. изображение / JPG .

1 голос
/ 14 марта 2010

Независимо от того, что пользователь переименовывает в расширение файла, это реальное расширение файла.

Вы никогда не должны зависеть от расширения файла, чтобы сказать вам, что находится в файле, так как он может быть переименован.

Смотрите ", как мы можем проверить типы файлов перед их загрузкой в ​​asp.net?"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...