[DllImport("urlmon.dll", CharSet=CharSet.Auto)]
static extern int FindMimeFromData(IntPtr pBC, IntPtr pwzUrl,byte[] pBuffer, int cbSize,
IntPtr pwzMimeProposed,int dwMimeFlags, out IntPtr ppwzMimeOut, int dwReserved );
Declare Function FindMimeFromData Lib "urlmon.dll" (TODO) As TODO
None.
None.
public string MimeTypeFrom(byte[] dataBytes, string mimeProposed) {
if (dataBytes == null)
throw new ArgumentNullException("dataBytes");
string mimeRet = String.Empty;
IntPtr suggestPtr = IntPtr.Zero, filePtr = IntPtr.Zero, outPtr = IntPtr.Zero;
if (mimeProposed != null && mimeProposed.Length > 0) {
//suggestPtr = Marshal.StringToCoTaskMemUni(mimeProposed); // for your experiments ;-)
mimeRet = mimeProposed;
}
int ret = FindMimeFromData(IntPtr.Zero, IntPtr.Zero, dataBytes, dataBytes.Length, suggestPtr, 0, out outPtr, 0);
if (ret == 0 && outPtr != IntPtr.Zero) {
return Marshal.PtrToStringUni(outPtr);
}
return mimeRet;
}
// call it this way:
Trace.Write("MimeType is " + MimeTypeFrom(Encoding.ASCII.GetBytes("%PDF-"), "text/plain"));
Do you know one? Please contribute it!