多くの場合、ファイルを正確に識別するMIMEのタイプは非常に重要です。特に、ファイル拡張機能が正しくないか、存在しない場合です。 .NETはこれの一般的なソリューションを提供しました。
.NETでは、開発者はurlmon.dllライブラリで関数を使用できます。この関数は、署名ソリューションを使用して、ファイルのMIMEタイプを決定します。
このテクノロジーを実現するには、以下の手順に従ってください:
FindMimeFromData
必要な命名スペースを紹介します:
-
初期化バッファ:
1 | using System.Runtime.InteropServices;
|
ログイン後にコピー
-
ファイルデータをバッファーに読み取ります:
1 | byte[] buffer = new byte[256];
|
ログイン後にコピー
-
mimeタイプを取得するための<函> call <函>関数:
1 2 3 4 5 6 7 | 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);
}
|
ログイン後にコピー
-
マイムタイプを文字列としてバックします。 FindMimeFromData
1 2 3 4 5 | uint mimetype;
FindMimeFromData(0, null, buffer, 256, null, 0, out mimetype, 0);
IntPtr mimeTypePtr = new IntPtr((int)mimetype);
string mime = Marshal.PtrToStringUni(mimeTypePtr);
Marshal.FreeCoTaskMem(mimeTypePtr);
|
ログイン後にコピー
このソリューションを実装することにより、開発者はファイルの拡張機能に関係なく、ファイルの署名に基づいてファイルのMIMEタイプを確実に決定できます。このテクノロジーは、ファイルのアップロード処理やコンテンツ配信など、さまざまなアプリケーションで非常に価値があります。
- 改善の説明:
>>
>>>コンストラクターはタイプを受け入れるため、潜在的な問題があります。 変更されたコードは、に変換して、互換性を確保します。 これは、異なるプラットフォームの.NET実装を扱う場合に特に重要です。 new IntPtr(mimetype)
以上が.NETでの署名を使用して、ファイルのMIMEタイプを決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。