2011-06-30 53 views
0

我需要一个片段来检查文件的有效性(我允许用户上传XML文件)。所以我需要检查上传的文件是否是XML。 我能想到的最好的方法就是检查扩展名是否为“.xml”。如果它被替换呢?检查上传的文件在vb.net

回答

3

你可以尝试加载它像这样和捕获异常:

XDocument xdoc = XDocument.Load("data.xml")); 
0

在Urlmon.dll中,有一个名为FindMimeFromData的函数。

从文档

MIME类型检测,或“数据 嗅探,”是指从 二进制数据确定适当的MIME类型 的过程。最终结果 取决于 服务器提供的MIME类型头文件, 文件扩展名和/或数据 本身的组合。通常,只有前256个字节的数据是重要的。

因此,从文件中读取第一个(最多)256个字节并将其传递给FindMimeFromData。

0

如果您必须验证XML(假设你想验证整个事),你可以使用XmlDocument类和捕捉如果有异常它不是XML。

+0

因为它可能是黑客或恶意用户搜索漏洞,不想单独回复文件扩展名:) –

+0

是的,唯一可以做文件扩展名检查的情况是,应用程序只是将用户的文件存储为服务,而不是自己使用它。然后检查文件扩展名将是一种简单的用户界面方式来说“嘿,那不是一个XML文件。” ..但它似乎并不是这里的应用程序。感谢您指出了这一点。 –

2

想必,如果他们上传XML,那么你将在事后使用它。在这种情况下,您应该根据Schema(XSD等)验证XML,以便知道您不会打击意外的值/布局等。