如何取出数据库中的二进制文件(未知格式的二进制文件) 朋友们,这些数据库中的二进制文件不知道是什么格式,请问怎么取出来,保存到本地呢?二进制文件数据库中的二进制文件未知格式的二进制文件 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道格式就麻烦了。这个二进制可能代表一个图片,也可能是一个word文档,也可能是按一定规则保存的十进制数的十六制进表示。 DataRow row_m = ds_m.Tables[0].Rows[0]; byte[] File = (byte[])row_m["FileObj"]; Response.ContentType = "audio / wav"; if (File.Length > 0) Response.BinaryWrite(File); 其中Response.ContentType = "audio / wav";是文件格式,上边的是语音文件 提供个思路,你试试是否可行。http://www.cnblogs.com/tuyile006/archive/2007/01/08/614718.html(通过上面链接的方法,我读取数据库二进制字段,该文章是以image为例。我们主要采用的是读取数据库中的字段,读取字段方法1,获得字节数组)http://blog.csdn.net/heling0223/article/details/6771001(该文章中通过字节数组判断文件类型,刚好上面方法获得了字节数组,可以通过此方法判断出文件类型。) 朋友,我从数据库中获取了二进制之后,怎么使用你后面这个网址的方法啊,好像获取不了二进制的类型啊。二进制数据挺好获取:byte[] buffer = (byte[])Dr["报告成品"]; 关键代码(你自己再仔细看下): MemoryStream ms = new MemoryStream(imgArray); //imgArray替换给你获取的buffer System.IO.BinaryReader br = new BinaryReader(ms); string fileclass = ""; byte buffer; try { buffer = br.ReadByte(); fileclass = buffer.ToString(); buffer = br.ReadByte(); fileclass += buffer.ToString(); } catch(Exception ex) { throw ex; } br.Close(); ms.Close(); foreach (FileExtension fe in fileEx) { if (Int32.Parse(fileclass) == (int)fe) return true; } return false; 测试了之后,得出的结果是空,是不是 public enum FileExtension 枚举里面的类型太少了,都不符合啊?有全的吗朋友。你的思路非常好。 代码打个包,上传到csdn资源上去。 共享是一种美德 代码打个包,上传到csdn资源上去。 共享是一种美德 我就是在csdn资源上下载的。 代码打个包,上传到csdn资源上去。 共享是一种美德 我就是在csdn资源上下载的。汗,链接贴出来呗 代码打个包,上传到csdn资源上去。 共享是一种美德 我就是在csdn资源上下载的。汗,链接贴出来呗 链接找不到了,把类代码贴上来 class Program { static Dictionary<string, string> dict = new Dictionary<string, string>(); static void addDictionary() { string source= @"JPEG (jpg),FFD8FF PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 TIFF (tif),文件头:49492A00 Windows Bitmap (bmp),文件头:424D CAD (dwg),文件头:41433130 Adobe Photoshop (psd),文件头:38425053 Rich Text Format (rtf),文件头:7B5C727466 XML (xml),文件头:3C3F786D6C HTML (html),文件头:68746D6C3E Email [thorough only] (eml),文件头:44656C69766572792D646174653A Outlook Express (dbx),文件头:CFAD12FEC5FD746F Outlook (pst),文件头:2142444E MS Word/Excel (xls.or.doc),文件头:D0CF11E0 MS Access (mdb),文件头:000100005374616e64617264204a WordPerfect (wpd),文件头:FF575043 Postscript (eps.or.ps),文件头:252150532D41646F6265 Adobe Acrobat (pdf),文件头:255044462D312E Quicken (qdf),文件头:AC9EBD8F Windows Password (pwl),文件头:E3828596 ZIP Archive (zip),文件头:504B0304 RAR Archive (rar),文件头:52617221 Wave (wav),文件头:52494646dad3010057415645 AVI (avi),文件头:524946462619000041564920 Real Audio (ram),文件头:2E7261FD Real Media (rm),文件头:2E524D46 MPEG (mpg),文件头:000001BA MPEG (mpg),文件头:000001B3 Quicktime (mov),文件头:6D6F6F76 Windows Media (asf),文件头:3026B2758E66CF11 MIDI (mid),文件头:4D546864 ".Replace("文件头:",""); string[] source2 = source.Split(new string[] { "\r\n", "\n" },StringSplitOptions.RemoveEmptyEntries); foreach (string ss in source2) { string[] temp = ss.Split(','); dict.Add(temp[1].Trim(), temp[0].Trim() ); } } static string Hec16FormFile(string path) { FileStream fs = File.Open(path,FileMode.Open); byte[] b = new byte[15]; fs.Read(b, 0, 15); fs.Close(); string str = string.Empty; foreach (byte myb in b) { string abc= Convert.ToString(myb,16); if (abc.Length == 1) abc = "0" + abc; str += abc; } return str.ToUpper(); } static string check(string str) { for (int i = 15; i > 0; i--) { string temp = str.Substring(0, i); KeyValuePair<string, string> dd = dict.FirstOrDefault<KeyValuePair<string, string>>(ele => ele.Key == temp); if (dd.Value != null) return dd.Value; } return "can not find it"; } static void Main(string[] args) { //png, bmp, jpg, tif, doc, mdb, zip, rar, wav, avi, rm 通过测试 addDictionary(); while (true) { Console.WriteLine("请输入文件路径:"); string path = Console.ReadLine(); string hec16 = Hec16FormFile(path); string strResult = check(hec16); Console.WriteLine(strResult); } } } EXCEL 导入问题 ASP.NET 操作XML的问题 CS调用aspx中函数怎么传参数?谢谢各位大侠了! 实在没办法~~~请xhan2000老师指点一下 csdn首页左上的翻转特效图怎么做的哦? 怎么样给用户授权 格式输出的问题 如何比较两个字符串(vb.net) 不支持关键字connect timeout 关于mvc中使用razor的问题! 字符串取值 jw player 这个播放器 谁用过 自动全屏参数是哪个?
这个二进制可能代表一个图片,也可能是一个word文档,也可能是按一定规则保存的十进制数的十六制进表示。
byte[] File = (byte[])row_m["FileObj"]; Response.ContentType = "audio / wav";
if (File.Length > 0)
Response.BinaryWrite(File);
Response.ContentType = "audio / wav";
是文件格式,上边的是语音文件
提供个思路,你试试是否可行。http://www.cnblogs.com/tuyile006/archive/2007/01/08/614718.html
(通过上面链接的方法,我读取数据库二进制字段,该文章是以image为例。我们主要采用的是读取数据库中的字段,读取字段方法1,获得字节数组)http://blog.csdn.net/heling0223/article/details/6771001
(该文章中通过字节数组判断文件类型,刚好上面方法获得了字节数组,可以通过此方法判断出文件类型。)
二进制数据挺好获取:byte[] buffer = (byte[])Dr["报告成品"];
关键代码(你自己再仔细看下): MemoryStream ms = new MemoryStream(imgArray); //imgArray替换给你获取的buffer
System.IO.BinaryReader br = new BinaryReader(ms);
string fileclass = "";
byte buffer;
try
{
buffer = br.ReadByte();
fileclass = buffer.ToString();
buffer = br.ReadByte();
fileclass += buffer.ToString();
}
catch(Exception ex)
{
throw ex;
}
br.Close();
ms.Close();
foreach (FileExtension fe in fileEx)
{
if (Int32.Parse(fileclass) == (int)fe)
return true;
}
return false;
有全的吗朋友。你的思路非常好。
代码打个包,上传到csdn资源上去。 共享是一种美德
代码打个包,上传到csdn资源上去。 共享是一种美德 我就是在csdn资源上下载的。
代码打个包,上传到csdn资源上去。 共享是一种美德 我就是在csdn资源上下载的。汗,链接贴出来呗
代码打个包,上传到csdn资源上去。 共享是一种美德 我就是在csdn资源上下载的。汗,链接贴出来呗
链接找不到了,把类代码贴上来
class Program
{
static Dictionary<string, string> dict = new Dictionary<string, string>(); static void addDictionary()
{
string source= @"JPEG (jpg),FFD8FF
PNG (png),文件头:89504E47
GIF (gif),文件头:47494638
TIFF (tif),文件头:49492A00
Windows Bitmap (bmp),文件头:424D
CAD (dwg),文件头:41433130
Adobe Photoshop (psd),文件头:38425053
Rich Text Format (rtf),文件头:7B5C727466
XML (xml),文件头:3C3F786D6C
HTML (html),文件头:68746D6C3E
Email [thorough only] (eml),文件头:44656C69766572792D646174653A
Outlook Express (dbx),文件头:CFAD12FEC5FD746F
Outlook (pst),文件头:2142444E
MS Word/Excel (xls.or.doc),文件头:D0CF11E0
MS Access (mdb),文件头:000100005374616e64617264204a
WordPerfect (wpd),文件头:FF575043
Postscript (eps.or.ps),文件头:252150532D41646F6265
Adobe Acrobat (pdf),文件头:255044462D312E
Quicken (qdf),文件头:AC9EBD8F
Windows Password (pwl),文件头:E3828596
ZIP Archive (zip),文件头:504B0304
RAR Archive (rar),文件头:52617221
Wave (wav),文件头:52494646dad3010057415645
AVI (avi),文件头:524946462619000041564920
Real Audio (ram),文件头:2E7261FD
Real Media (rm),文件头:2E524D46
MPEG (mpg),文件头:000001BA
MPEG (mpg),文件头:000001B3
Quicktime (mov),文件头:6D6F6F76
Windows Media (asf),文件头:3026B2758E66CF11
MIDI (mid),文件头:4D546864
".Replace("文件头:","");
string[] source2 = source.Split(new string[] { "\r\n", "\n" },StringSplitOptions.RemoveEmptyEntries);
foreach (string ss in source2)
{
string[] temp = ss.Split(',');
dict.Add(temp[1].Trim(), temp[0].Trim() );
}
} static string Hec16FormFile(string path)
{
FileStream fs = File.Open(path,FileMode.Open);
byte[] b = new byte[15];
fs.Read(b, 0, 15);
fs.Close();
string str = string.Empty;
foreach (byte myb in b)
{
string abc= Convert.ToString(myb,16);
if (abc.Length == 1) abc = "0" + abc;
str += abc;
}
return str.ToUpper();
} static string check(string str)
{
for (int i = 15; i > 0; i--)
{
string temp = str.Substring(0, i);
KeyValuePair<string, string> dd = dict.FirstOrDefault<KeyValuePair<string, string>>(ele => ele.Key == temp);
if (dd.Value != null) return dd.Value;
}
return "can not find it";
} static void Main(string[] args)
{
//png, bmp, jpg, tif, doc, mdb, zip, rar, wav, avi, rm 通过测试
addDictionary();
while (true)
{
Console.WriteLine("请输入文件路径:");
string path = Console.ReadLine();
string hec16 = Hec16FormFile(path);
string strResult = check(hec16);
Console.WriteLine(strResult);
}
}
}