¿Cómo la gente suele detectar el tipo MIME de un archivo cargado con ASP.NET?¿Cómo debo detectar el tipo MIME de un archivo cargado en ASP.NET?
20
A
Respuesta
22
en la página aspx:
<asp:FileUpload ID="FileUpload1" runat="server" />
en el código subyacente (C#):
string contentType = FileUpload1.PostedFile.ContentType
12
El código anterior no dará el tipo de contenido correcto si se cambia el nombre del archivo y subido.
Utilice este código para que
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();
}
10
Mientras aneesh es correcto al decir que el tipo de contenido de la petición HTTP puede no ser correcta, no creo que la de clasificación para la llamada no administrado vale la pena eso. Si necesita volver a caer a asignaciones de extensión a MIME, simplemente "tomar prestado" el código de System.Web.MimeMapping.cctor (uso del reflector). Este enfoque de diccionario es más que suficiente y no requiere la llamada nativa.
Cuestiones relacionadas
- 1. Finfo_file el archivo cargado para determinar tipo MIME
- 2. ¿Cómo obtener el tipo MIME de un archivo en Qt?
- 3. ¿Cómo comprobar si un archivo cargado es una imagen sin tipo de mime?
- 4. establecimiento de tipo MIME en asp.net
- 5. ¿Cómo devuelvo FileResult en ASP.NET sin conocer el tipo MIME?
- 6. es la detección de tipo MIME la mejor manera de detectar un tipo de archivo?
- 7. Detectando un tipo de archivo mimetype en coldfusion que ya está cargado en el servidor
- 8. ¿Cómo agregar un tipo de mime personalizado?
- 9. ¿Cómo se determina el tipo de mimo de un archivo cargado por el navegador?
- 10. PHP obtener archivo remoto mime-tipo
- 11. Lanzando un intento para el tipo de archivo y MIME?
- 12. PowerShell: ¿es posible determinar el tipo MIME de un archivo?
- 13. ¿Cómo saber cuál es el tipo MIME según el archivo?
- 14. ¿Cuál es el tipo mime de un archivo wsdl?
- 15. Encontrar un tipo MIME para un archivo en Windows
- 16. ¿Cómo puedo detectar el tipo mime de la pestaña actual en una extensión de Google Chrome?
- 17. Asp.Net MVC2 RenderAction cambia el tipo de página de mime?
- 18. ¿Cómo agrego un tipo MIME a .htaccess?
- 19. Obtener el tipo MIME del nombre de archivo en C
- 20. Carga de archivos ASP.NET: ¿cómo puedo asegurarme de que un archivo cargado es realmente un archivo JPEG?
- 21. ¿Cómo usar el tipo CSV MIME?
- 22. jQuery tomar un archivo cargado con tipo de entrada = 'archivo'
- 23. archivo Rendering con el tipo MIME en los carriles
- 24. Detectando tipo MIME en PHP
- 25. ¿Cómo se puede leer un archivo de tipo MIME en Object-C
- 26. correcta para el tipo mime .mp4
- 27. tipo MIME para el archivo zip en Google Chrome
- 28. ASP.NET/IIS6: ¿Cómo buscar en el mapa mime del servidor?
- 29. JS y type.match como tipo de archivo mime - necesito consejo
- 30. Convertir un archivo cargado en un archivo
En este punto en el tiempo, la función System.Web.MimeMapping.GetMimeMapping() es pública y se puede llamar directamente. –