从ASP.NET FileUpload控件获取文件类型?

时间:2009-10-28 15:50:44

标签: c# asp.net

我想获取使用ASP.NET FileUpload控件上传的文件类型。当我上传文件时,我希望能够获得上传的文件类型,因此我可以为文件指定一个图标(例如word,excel,pdf图标)。

问题是,我无法取消文件扩展名,因为文件可能被称为test.xxxxxxxx并且是有效的pdf文件,或者文件可能没有扩展名。

另一种选择是读取内容类型,但其中一些看起来不是标准的或者是一种简单易读的格式,例如excel文件,那么还有另一种选择来确定文件类型吗?

3 个答案:

答案 0 :(得分:1)

我会检查一个名为PDF文件“test.xxxxxxxx”而没有“.pdf”扩展名的过程。大多数文件工作流都有某种命名约定(手动或自动)

如果您无法阅读扩展名,则需要通过使其成为已知文件格式的标记来检测文件格式:例如:如果流以“%PDF”开头或包含“%PDF”,则为PDF。

答案 1 :(得分:0)

如果您不知道扩展名,那么您必须知道常用文件类型的文件格式,然后阅读该文件并查看它是否与您已知的格式匹配。但这听起来并不是最佳的。

答案 2 :(得分:0)

使用System.IO.BinaryReader检查文件服务器端的真实类型的简单方法如下所述:

http://forums.asp.net/post/2680667.aspx

和VB版本:

http://forums.asp.net/post/2681036.aspx

您需要知道要检查的文件类型的二进制“代码”,但是您可以通过实现此解决方案并调试代码来获取这些代码。

另请注意,当使用r.Close()语句关闭BinaryReader时,这将使FileUploader.HasFile = False