我有一个连接到SQL Server数据库的C#项目,并且我正在为文件上传执行格式识别。更具体地说,我上传varbinary中的文件,并将它们存储在Db的一个列中。当我下载它们时,我想识别它们的格式。我在网上找到了一些热门关键字(或元数据),通过它们我可以识别它们是docx、xlsx还是其他。我的问题是,如果我在SQL上这样做:
select * from table where convert(varchar(8000),objectFile) like '%docprop%'`它可以工作,并且数据库只返回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";
}发布于 2014-09-19 18:41:34
http://www.garykessler.net/library/file_sigs.html
检查这个链接,你应该调查一下魔术数字。这是了解文件类型的唯一可靠方法。在你的例子中,你可以使用内容类型,就像我在评论中告诉你的那样!
如果搜索以03 00开头序列
byte[] fileSign={0x03, 0x04, 0x00};
for(int i=0; i<fileSign.Length; i++)
{
if(fileByteArray[i] != fileSign[i])
{
//not the same files
}
}https://stackoverflow.com/questions/25931189
复制相似问题