人們通常如何使用ASP.NET檢測上傳文件的MIME類型?我應該如何檢測ASP.NET中上傳文件的MIME類型?
20
A
回答
22
在aspx頁面:
<asp:FileUpload ID="FileUpload1" runat="server" />
在代碼隱藏(C#)
:
string contentType = FileUpload1.PostedFile.ContentType
12
如果文件被重命名,並上傳上面的代碼不會給正確的內容類型。
雖然aneesh是說,HTTP請求的內容類型可能不正確,請正確使用此代碼爲
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
,我不認爲非託管呼叫編組值得它。如果您需要回退到擴展到MIME類型的映射,只需從System.Web.MimeMapping.cctor中「借用」代碼(使用Reflector)。這種字典方式綽綽有餘,不需要本地電話。
相關問題
- 1. 在Ruby中檢測上傳文件的MIME類型
- 2. 如何使用Perl CGI檢查上傳文件的MIME類型?
- 3. 如何在asp.net中可靠地檢測MIME類型上傳的[基於文本的]文件?
- 4. 如何檢查文件的MIME類型
- 5. MIME類型的自動檢測.js文件在Firefox中上傳失敗
- 6. Rails 3.2中的'Mime'和'MIME'(文件上傳類型)是什麼?
- 7. 檢測ajax響應的MIME類型
- 8. ASP.NET,C#,IIS,MIME類型,文件上傳條件
- 9. PHP MIME類型,限制上傳文件
- 10. 文件上傳某些MIME類型
- 11. 文件Mime類型檢查
- 12. 的MIME類型,我應該使用MP3
- 13. asp.net文件上傳檢查總是返回無效的MIME類型
- 14. Android - 檢測URL MIME類型?
- 15. 從DataHandler檢測MIME類型
- 16. 如何獲得MIME類型上傳文件的澤西
- 17. 如何檢查上傳的文件是否爲沒有MIME類型的圖像?
- 18. 我應該爲MPP文件使用什麼MIME類型?
- 19. 如何獲取ASP.NET C#中請求的文件的MIME類型?
- 20. 檢測MIME從數據庫中提取的文件類型
- 21. 文件上傳:如何使用斷言排除MIME類型?
- 22. Mime類型PDF PHP上傳
- 23. CSV上傳 - MIME類型
- 24. Nodejs - 檢索遠程文件並檢測MIME類型
- 25. 如何檢測文件何時上傳到文件類型的輸入元素?
- 26. 檢測已在服務器上載的coldfusion中的文件MIME類型
- 27. 我應該如何測試郵件文件中的類對象?
- 28. Zend_Form的 - 文件「foto.jpg」的MIME類型無法檢測
- 29. 在Symfony功能測試中未找到用於文件上傳的MIME類型
- 30. 在PHP中上傳驗證MIME類型的pdf文件
此時,System.Web.MimeMapping.GetMimeMapping()函數是公共的,可以直接調用。 – 2014-10-20 16:43:25