Guest User

Untitled

a guest
Jul 17th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. using System.Reflection;
  2. using System.Runtime.InteropServices;
  3.  
  4. [System.Runtime.InteropServices.DllImport(@"urlmon.dll", CharSet = CharSet.Auto)]
  5. private extern static System.UInt32 FindMimeFromData(
  6. System.UInt32 pBC,
  7. [MarshalAs(UnmanagedType.LPStr)] System.String pwzUrl,
  8. [MarshalAs(UnmanagedType.LPArray)] byte[] pBuffer,
  9. System.UInt32 cbSize,
  10. [MarshalAs(UnmanagedType.LPStr)] System.String pwzMimeProposed,
  11. System.UInt32 dwMimeFlags,
  12. out System.UInt32 ppwzMimeOut,
  13. System.UInt32 dwReserverd
  14. );
  15.  
  16. public void SomeMethod(string fileName)
  17. {
  18. string mimeType = getMimeFromFile(fileName);
  19.  
  20. if (mimeType == "text/plain")
  21. {
  22. // do something
  23. }
  24. }
  25.  
  26. private string getMimeFromFile(string filename)
  27. {
  28. if (!File.Exists(filename))
  29. throw new FileNotFoundException(filename + " not found");
  30.  
  31. byte[] buffer = new byte[256];
  32. using (FileStream fs = new FileStream(filename, FileMode.Open))
  33. {
  34. if (fs.Length >= 256)
  35. fs.Read(buffer, 0, 256);
  36. else
  37. fs.Read(buffer, 0, (int)fs.Length);
  38. }
  39. try
  40. {
  41. System.UInt32 mimetype;
  42. FindMimeFromData(0, null, buffer, 256, null, 0, out mimetype, 0);
  43. System.IntPtr mimeTypePtr = new IntPtr(mimetype);
  44. string mime = Marshal.PtrToStringUni(mimeTypePtr);
  45. Marshal.FreeCoTaskMem(mimeTypePtr);
  46. return mime;
  47. }
  48. catch (Exception ex)
  49. {
  50. return ex.Message;
  51. }
  52. }
  53.  
  54. this.dialog = new SaveFileDialog();
  55.  
  56. try
  57. {
  58. this.dialog.DefaultExt = ".txt";
  59. this.dialog.Filter = "Text Files|*.txt|Log Files|*.log|All Files|*.*";
  60. this.dialog.FilterIndex = 2;
  61. }
  62. catch ( Exception ex )
  63. {
  64. this.tblError.Text = "Error configuring SaveFileDialog: " + ex.Message;
  65. }
Add Comment
Please, Sign In to add comment