如何取出数据库中的二进制文件(未知格式的二进制文件)

yizhilideliliang 2013-04-22 11:18:27

朋友们,这些数据库中的二进制文件不知道是什么格式,请问怎么取出来,保存到本地呢?
...全文
535 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yizhilideliliang 2013-05-02
  • 打赏
  • 举报
回复
引用 16 楼 zanychou 的回复:
[quote=引用 15 楼 yizhilideliliang 的回复:] [quote=引用 14 楼 zanychou 的回复:] [quote=引用 13 楼 yizhilideliliang 的回复:] 我在网上找到了一个能识别二进制类型的方法,不过代码有些多,有需要的我可以把代码发给你们,结贴喽!
代码打个包,上传到csdn资源上去。 共享是一种美德 [/quote]我就是在csdn资源上下载的。[/quote] 汗,链接贴出来呗 [/quote] 链接找不到了,把类代码贴上来 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); } } }
习惯就好 2013-04-28
  • 打赏
  • 举报
回复
引用 15 楼 yizhilideliliang 的回复:
[quote=引用 14 楼 zanychou 的回复:] [quote=引用 13 楼 yizhilideliliang 的回复:] 我在网上找到了一个能识别二进制类型的方法,不过代码有些多,有需要的我可以把代码发给你们,结贴喽!
代码打个包,上传到csdn资源上去。 共享是一种美德 [/quote]我就是在csdn资源上下载的。[/quote] 汗,链接贴出来呗
yizhilideliliang 2013-04-28
  • 打赏
  • 举报
回复
引用 14 楼 zanychou 的回复:
[quote=引用 13 楼 yizhilideliliang 的回复:] 我在网上找到了一个能识别二进制类型的方法,不过代码有些多,有需要的我可以把代码发给你们,结贴喽!
代码打个包,上传到csdn资源上去。 共享是一种美德 [/quote]我就是在csdn资源上下载的。
yizhilideliliang 2013-04-23
  • 打赏
  • 举报
回复
判断未知二进制类型的方法好难啊
H_Gragon 2013-04-23
  • 打赏
  • 举报
回复
yizhilideliliang 2013-04-23
  • 打赏
  • 举报
回复
引用 9 楼 zanychou 的回复:
关键代码(你自己再仔细看下): MemoryStream ms = new MemoryStream(imgArray); //imgArray替换给你获取的buffer System.IO.BinaryReader br = new BinaryReader(ms); string fileclass = ""; http://blog……
测试了之后,得出的结果是空,是不是 public enum FileExtension 枚举里面的类型太少了,都不符合啊? 有全的吗朋友。你的思路非常好。
习惯就好 2013-04-23
  • 打赏
  • 举报
回复
引用 13 楼 yizhilideliliang 的回复:
我在网上找到了一个能识别二进制类型的方法,不过代码有些多,有需要的我可以把代码发给你们,结贴喽!
代码打个包,上传到csdn资源上去。 共享是一种美德
yizhilideliliang 2013-04-23
  • 打赏
  • 举报
回复
我在网上找到了一个能识别二进制类型的方法,不过代码有些多,有需要的我可以把代码发给你们,结贴喽!
yizhilideliliang 2013-04-22
  • 打赏
  • 举报
回复
再想想啊朋友,有办法吗?
艾伦图灵 2013-04-22
  • 打赏
  • 举报
回复
不知道格式就麻烦了。 这个二进制可能代表一个图片,也可能是一个word文档,也可能是按一定规则保存的十进制数的十六制进表示。
习惯就好 2013-04-22
  • 打赏
  • 举报
回复
引用 7 楼 zanychou 的回复:
提供个思路,你试试是否可行。 http://www.cnblogs.com/tuyile006/archive/2007/01/08/614718.html (通过上面链接的方法,我读取数据库二进制字段,该文章是以image为例。我们主要采用的是读取数据库中的字段,读取字段方法1,获得字节数组) http://blog.csdn.net/heling0223/article/deta……
关键代码(你自己再仔细看下): 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;
yizhilideliliang 2013-04-22
  • 打赏
  • 举报
回复
引用 7 楼 zanychou 的回复:
提供个思路,你试试是否可行。 http://www.cnblogs.com/tuyile006/archive/2007/01/08/614718.html (通过上面链接的方法,我读取数据库二进制字段,该文章是以image为例。我们主要采用的是读取数据库中的字段,读取字段方法1,获得字节数组) http://blog.csdn.net/heling0223/article/deta……
朋友,我从数据库中获取了二进制之后,怎么使用你后面这个网址的方法啊,好像获取不了二进制的类型啊。 二进制数据挺好获取:byte[] buffer = (byte[])Dr["报告成品"];
习惯就好 2013-04-22
  • 打赏
  • 举报
回复
提供个思路,你试试是否可行。 http://www.cnblogs.com/tuyile006/archive/2007/01/08/614718.html (通过上面链接的方法,我读取数据库二进制字段,该文章是以image为例。我们主要采用的是读取数据库中的字段,读取字段方法1,获得字节数组) http://blog.csdn.net/heling0223/article/details/6771001 (该文章中通过字节数组判断文件类型,刚好上面方法获得了字节数组,可以通过此方法判断出文件类型。)
md5e 2013-04-22
  • 打赏
  • 举报
回复
其中 Response.ContentType = "audio / wav"; 是文件格式,上边的是语音文件
md5e 2013-04-22
  • 打赏
  • 举报
回复
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);
yizhilideliliang 2013-04-22
  • 打赏
  • 举报
回复
yizhilideliliang 2013-04-22
  • 打赏
  • 举报
回复

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧