2008-09-17 17 views

cevap

22

: codebehind (C#) 'de

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

: Dosya yeniden adlandırılmış ve yüklenen ise

string contentType = FileUpload1.PostedFile.ContentType 
12

Yukarıdaki kod doğru içerik türünü vermeyecektir. aneesh HTTP isteğinin içerik türü doğru olmayabilir olduğunu söyleyerek doğru olsa

o

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

için bu kodu kullanın, ben yönetilmeyen çağrı için manevra değer olduğunu sanmıyorum o. Uzatmadan mime tür eşlemelerine geri dönmeniz gerekiyorsa, kodu System.Web.MimeMapping.cctor'dan (yansıtıcıyı kullan) "ödünç" edin. Bu sözlük yaklaşımı daha fazla ve yerel çağrı gerektirmez.

+1

Bu noktada, System.Web.MimeMapping.GetMimeMapping() işlevi geneldir ve doğrudan çağrılabilir. –

İlgili konular