Re: How can I get the content/mime type?

  •  10-15-2009, 9:04 AM

    Re: How can I get the content/mime type?

    1. [DllImport(@"urlmon.dll", CharSet = CharSet.Auto)]   
    2.     private extern static System.UInt32 FindMimeFromData(   
    3.         System.UInt32 pBC,   
    4.         [MarshalAs(UnmanagedType.LPStr)] System.String pwzUrl,   
    5.         [MarshalAs(UnmanagedType.LPArray)] byte[] pBuffer,   
    6.         System.UInt32 cbSize,   
    7.         [MarshalAs(UnmanagedType.LPStr)] System.String pwzMimeProposed,   
    8.         System.UInt32 dwMimeFlags,   
    9.         out System.UInt32 ppwzMimeOut,   
    10.         System.UInt32 dwReserverd   
    11.     );   
    12.   
    13.     public string getMimeFromFile(string filename)   
    14.     {   
    15.         if (!File.Exists(filename))   
    16.             throw new FileNotFoundException(filename + " not found");   
    17.   
    18.         byte[] buffer = new byte[256];   
    19.         using (FileStream fs = new FileStream(filename, FileMode.Open))   
    20.         {   
    21.             if (fs.Length >= 256)   
    22.                 fs.Read(buffer, 0, 256);   
    23.             else  
    24.                 fs.Read(buffer, 0, (int)fs.Length);   
    25.         }   
    26.         try  
    27.         {   
    28.             System.UInt32 mimetype;   
    29.             FindMimeFromData(0, null, buffer, 256, null, 0, out mimetype, 0);   
    30.             System.IntPtr mimeTypePtr = new IntPtr(mimetype);   
    31.             string mime = Marshal.PtrToStringUni(mimeTypePtr);   
    32.             Marshal.FreeCoTaskMem(mimeTypePtr);   
    33.             return mime;   
    34.         }   
    35.         catch (Exception e)   
    36.         {   
    37.             return "unknown/unknown";   
    38.         }   
    39.     }  

     

    Give that a shot

View Complete Thread