朋友们,这些数据库中的二进制文件不知道是什么格式,请问怎么取出来,保存到本地呢?二进制文件数据库中的二进制文件未知格式的二进制文件

解决方案 »

  1.   

    不知道格式就麻烦了。
    这个二进制可能代表一个图片,也可能是一个word文档,也可能是按一定规则保存的十进制数的十六制进表示。
      

  2.   

                           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);
      

  3.   

    其中
    Response.ContentType = "audio / wav";
    是文件格式,上边的是语音文件
      

  4.   


    提供个思路,你试试是否可行。http://www.cnblogs.com/tuyile006/archive/2007/01/08/614718.html
    (通过上面链接的方法,我读取数据库二进制字段,该文章是以image为例。我们主要采用的是读取数据库中的字段,读取字段方法1,获得字节数组)http://blog.csdn.net/heling0223/article/details/6771001
    (该文章中通过字节数组判断文件类型,刚好上面方法获得了字节数组,可以通过此方法判断出文件类型。)
      

  5.   

    朋友,我从数据库中获取了二进制之后,怎么使用你后面这个网址的方法啊,好像获取不了二进制的类型啊。
    二进制数据挺好获取:byte[] buffer = (byte[])Dr["报告成品"];
      

  6.   


    关键代码(你自己再仔细看下):            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; 
      

  7.   

    测试了之后,得出的结果是空,是不是 public enum FileExtension  枚举里面的类型太少了,都不符合啊?
    有全的吗朋友。你的思路非常好。
      

  8.   


    代码打个包,上传到csdn资源上去。 共享是一种美德 
      

  9.   


    代码打个包,上传到csdn资源上去。 共享是一种美德 我就是在csdn资源上下载的。
      

  10.   


    代码打个包,上传到csdn资源上去。 共享是一种美德 我就是在csdn资源上下载的。汗,链接贴出来呗  
      

  11.   


    代码打个包,上传到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);
                }
            }
        }