type tipo para net configurar aspx asp asignacion asp.net types mime

para - ¿Cómo debo detectar el tipo MIME de un archivo cargado en ASP.NET?



tipo mime asp net (3)

¿Cómo la gente generalmente detecta el tipo MIME de un archivo cargado utilizando ASP.NET?


El código anterior no dará el tipo de contenido correcto si el archivo cambia de nombre y se carga.

Por favor usa este código para eso

using System.Runtime.InteropServices; [DllImport("urlmon.dll", CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = false)] static extern int FindMimeFromData(IntPtr pBC, [MarshalAs(UnmanagedType.LPWStr)] string pwzUrl, [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.I1, SizeParamIndex = 3)] byte[] pBuffer, int cbSize, [MarshalAs(UnmanagedType.LPWStr)] string pwzMimeProposed, int dwMimeFlags, out IntPtr ppwzMimeOut, int dwReserved); public static string getMimeFromFile(HttpPostedFile file) { IntPtr mimeout; int MaxContent = (int)file.ContentLength; if (MaxContent > 4096) MaxContent = 4096; byte[] buf = new byte[MaxContent]; file.InputStream.Read(buf, 0, MaxContent); int result = FindMimeFromData(IntPtr.Zero, file.FileName, buf, MaxContent, null, 0, out mimeout, 0); if (result != 0) { Marshal.FreeCoTaskMem(mimeout); return ""; } string mime = Marshal.PtrToStringUni(mimeout); Marshal.FreeCoTaskMem(mimeout); return mime.ToLower(); }


Si bien aneesh está en lo cierto al decir que el tipo de contenido de la solicitud HTTP puede no ser correcto, no creo que valga la pena la clasificación para la llamada no administrada. Si necesita recurrir a las asignaciones de extensión a tipo MIME, simplemente "tome prestado" el código de System.Web.MimeMapping.cctor (use Reflector). Este enfoque de diccionario es más que suficiente y no requiere la llamada nativa.


en la página aspx:

<asp:FileUpload ID="FileUpload1" runat="server" />

en el código detrás (c #):

string contentType = FileUpload1.PostedFile.ContentType