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";
}
}
ただし、異なるブラウザではMIMEタイプが異なる可能性があるため、異なるブラウザでタイプを確認してください。
また、ファイルの名前を編集して拡張子を変更した場合でも、正確なMIMEタイプが得られます。
希望します。
1
ファイルフォーマットの仕様に従ってファイル全体を実際に解析し、すべてが適合していることを確認する唯一の方法があります。
ほとんどのバイナリファイル形式は、最初に何らかの形式のヘッダまたはmagic numberがあり、確認することができます。
0
関連する問題
- 1. ファイルアップロードC#asp.net
- 2. asp.netのファイルアップロードMVC3.0
- 3. Asp.Net 2.0ファイルアップロード
- 4. Asp.Net Googleスタイルのファイルアップロード
- 5. ASP.NETのファイルアップロード機能
- 6. ASP.NetストリームI/O - ファイルアップロード
- 7. Asp.net複数のファイルアップロード
- 8. ファイルアップロード機能 - ASP.NET MVC/AJAX
- 9. asp.net動的複数ファイルアップロード
- 10. Asp.netログインとファイルアップロードの質問
- 11. ASP.Net MVCファイルアップロードが動作しません
- 12. ASP.NET Core 2.0とAngular 4.3ファイルアップロードwith progress
- 13. ASP.NET Core 2カミソリのページのファイルアップロード
- 14. ASP.Netでのコンテンツ範囲ファイルアップロードの使用
- 15. asp.netファイルアップロードのFileNameのUnicode検証
- 16. asp.netのプログレスバー付きファイルアップロード - フラッシュなし
- 17. ASP.NET、C#、IIS、MIMEタイプ、ファイルアップロード条件:
- 18. asp.netコアのフォームデータを使用したファイルアップロード
- 19. C#でASP.NET MVC with razorのファイルアップロード
- 20. ASP.Net Core 2.0 Web APIとReact.jsを使用したファイルアップロード
- 21. asp.net C#Webフォームを使用した複数ファイルアップロードの検証
- 22. Asp.netでHTML5のドラッグアンドドロップを使用したファイルアップロード
- 23. ASP.NET Web APIでファイルアップロードを検証する方法
- 24. ASP.Net MVC剣道ファイルアップロードの検証が機能しない
- 25. asp.netでファイルアップロードが正常に動作しません
- 26. ASP.NET MVC RazorフォームからEFへファイルアップロードでフォームを作成
- 27. ASP.NET MVC 3でファイルアップロードをJPG、PNG、GIFに制限する方法
- 28. ASP.NETファイルアップロードで許可される最大ファイルサイズコントロール
- 29. VB ASP.NETファイルアップロードのための単純なプログレスバーが必要
- 30. 完全なjqueryファイルアップロードでasp.netイベントをトリガーする
どのフォーマットを受け入れますか? – Andomar
パケットトレーサファイル.pkt – SMK