SQL中的转换和C#中的转换之间的差异

时间:2014-09-19 09:55:19

标签: c# sql-server sql-like varbinary

我有一个连接到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";
    }

1 个答案:

答案 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
   }
}