在ASP.NET的文件上傳控制中驗證文件格式的最佳方式是什麼? 其實我想讓那個用戶只上傳特定格式的文件。雖然我通過檢查文件名來驗證它,但我正在尋找另一種解決方案來解決這個問題。文件上傳asp.net
1
A
回答
1
請嘗試下面的代碼,它從文件中讀取前256個字節,並使用內部dll(urlmon.dll)返回該文件的mime類型。然後比較解析後文件的MIME類型和返回的MIME類型。
using System.Runtime.InteropServices; ...
[DllImport(@"urlmon.dll", CharSet = CharSet.Auto)]
private extern static System.UInt32 FindMimeFromData(
System.UInt32 pBC,
[MarshalAs(UnmanagedType.LPStr)] System.String pwzUrl,
[MarshalAs(UnmanagedType.LPArray)] byte[] pBuffer,
System.UInt32 cbSize,
[MarshalAs(UnmanagedType.LPStr)] System.String pwzMimeProposed,
System.UInt32 dwMimeFlags,
out System.UInt32 ppwzMimeOut,
System.UInt32 dwReserverd
);
public string getMimeFromFile(string filename)
{
if (!File.Exists(filename))
throw new FileNotFoundException(filename + " not found");
byte[] buffer = new byte[256];
using (FileStream fs = new FileStream(filename, FileMode.Open))
{
if (fs.Length >= 256)
fs.Read(buffer, 0, 256);
else
fs.Read(buffer, 0, (int)fs.Length);
}
try
{
System.UInt32 mimetype;
FindMimeFromData(0, null, buffer, 256, null, 0, out mimetype, 0);
System.IntPtr mimeTypePtr = new IntPtr(mimetype);
string mime = Marshal.PtrToStringUni(mimeTypePtr);
Marshal.FreeCoTaskMem(mimeTypePtr);
return mime;
}
catch (Exception e)
{
return "unknown/unknown";
}
}
但在不同的瀏覽器中檢查類型,因爲mimetype可能在不同的瀏覽器中有所不同。
此外,即使您通過編輯文件的名稱更改了擴展名,也會給出確切的mimetype。
希望這可以幫助你...
1
要確定的唯一方法是根據文件格式的規範實際解析整個文件,並檢查一切是否合適。
如果您只想進行基本檢查,大多數二進制文件格式在開頭都有某種形式的標頭或magic number,您可以檢查。
0
相關問題
- 1. asp.net文件上傳
- 2. ASP.NET文件上傳
- 3. asp.net上傳文件
- 4. Asp.net上傳文件
- 5. Asp.net文件上傳控件
- 6. Asp.net文件上傳事件
- 7. 在asp.net中上傳文件?
- 8. ASP.NET MVC文件上傳
- 9. 上傳asp.net文件和c#
- 10. ASP.net文件上傳保存
- 11. ASP.Net Ajax文件上傳
- 12. ASP.NET MVC上傳文件
- 13. 文件上傳ASP.NET MVC
- 14. 上傳多個文件ASP.NET
- 15. 多文件上傳asp.net mvc
- 16. ASP.NET文件上傳 - 驗證
- 17. asp.net中的文件上傳
- 18. 上傳文件asp.net mvc 2
- 19. 多文件上傳ASP.NET MVC
- 20. Asp.Net多文件上傳
- 21. ASP.NET文件上傳驗證
- 22. asp.net mvc大文件上傳
- 23. Asp.net多文件上傳
- 24. 在Asp.Net文件上傳MVC
- 25. ASP.Net Ajax文件上傳
- 26. 在ASP.NET中上傳文件
- 27. asp.net文件上傳問題
- 28. ASP.NET MVC文件上傳
- 29. 上傳大文件asp.net
- 30. asp.net mvc上傳文件ajax
你打算接受哪種格式? – Andomar
我想上傳Packet Tracer文件.pkt – SMK