【发布时间】:2014-09-19 09:55:19
【问题描述】:
我有一个连接到 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";
}
【问题讨论】:
-
var 项目返回什么?您想将 byte[] 转换为字符串?
-
var item 返回一个对象(数据库的一行)。我会以与数据库相同的方式将 byte[] 转换为字符串。
-
当您将记录保存到数据库中时,只需创建新字段 ContentType,您将保存该字段中的内容。以后就不会出现这样的问题了!
-
我知道,但是我想找到我上面写的方法,如果它存在的话
-
看看我的回答,如果有什么不清楚的地方告诉我!
标签: c# sql-server sql-like varbinary