我有一个连接到SQL Server数据库的C#项目,我正在为文件上传进行格式识别。 更具体地说,我在varbinary中上传文件,并将它们存储在Db中的一列中。当我下载它们时,我想要识别它们的格式。我在网上发现了一些热门关键字(或元数据),通过它我可以识别它们是docx还是xlsx或其他。我的问题是,如果我在SQL上执行此操作:
select * from table where convert(varchar(8000),objectFile) like '%docprop%'`
它工作,db只返回word文件。 但如果我想在服用varbinary之后在C#上这样做我该怎么办? 我试过这个但是不能工作:
var item = context.tObject_M.SingleOrDefault(x => x.objectId == objectId);
var files = item.objectFile;
string filess = Convert.ToString(files);
byte[] itemi = item.objectFile;
string ciao = System.Text.Encoding.UTF8.GetString(itemi);
if (ciao.Contains("DOCPROPS"))
{
filess = "ciao";
}
答案 0 :(得分:0)
http://www.garykessler.net/library/file_sigs.html
检查此链接,您应该调查魔术数字。这是了解文件类型的唯一可靠方法。在您的情况下,您可以使用我在评论中告诉您的内容类型!
如果搜索以[03] [04] [00]
开头的序列byte[] fileSign={0x03, 0x04, 0x00};
for(int i=0; i<fileSign.Length; i++)
{
if(fileByteArray[i] != fileSign[i])
{
//not the same files
}
}