在FileUpload Control中获取文件的扩展名

时间:2010-03-14 16:52:10

标签: asp.net file-upload

目前我获得了文件的文件扩展名,如:

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

但是如果用户更改了文件的文件扩展名(例如用户可以将“test.txt”重命名为“test.jpg”),我就无法获得真正的扩展名。解决方案是什么?

3 个答案:

答案 0 :(得分:5)

您似乎在询问是否可以从其内容中识别文件类型。

大多数解决方案确实会尝试文件扩展,但有太多不同的可能文件类型可以可靠地识别。

大多数方法使用文件的前几个字节来确定它们是什么。

Here是一个列表,here是另一个列表。

如果您只担心文字与二进制,请参阅this SO问题和答案。

请参阅this以获取检查文件是否为JPG的答案 - 此方法可以扩展为使用其他文件头,如本答案的前两个链接所示。

答案 1 :(得分:1)

无论用户将文件扩展名重命名为什么,都是真正的文件扩展名。

您永远不应该依赖文件扩展名来告诉您文件中的内容,因为它可以重命名。

请参阅“how can we check file types before uploading them in asp.net?

答案 2 :(得分:1)

没有办法获得'真正的'文件扩展名 - 你从文件名中获得的文件扩展名是真实的。如果您关心文件内容,则可以使用.ContentType属性检索内容类型,并验证它是您期望的内容类型 - 例如。 图像/ JPG