Получение расширения файла в Управлении FileUpload

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

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

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

5
задан Mostafa 14 March 2010 в 16:52
поделиться

3 ответа

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

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

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

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

Если вас беспокоит только текст и двоичный файл, см. этот SO вопрос и ответы.

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

5
ответ дан 14 December 2019 в 08:48
поделиться

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

1
ответ дан 14 December 2019 в 08:48
поделиться

Во что бы пользователь ни переименовал расширение файла, это и есть настоящее расширение файла.

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

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

.
1
ответ дан 14 December 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: