tandatangan fail dalam .net menentukan jenis mime jenis
Jenis MIME yang mengenal pasti fail secara tepat adalah penting untuk pemprosesan dan operasi yang betul. Apabila pelanjutan fail kurang atau salah, tandatangan fail mesti bergantung pada jenis fail untuk menentukan dengan tepat jenis fail. Artikel ini membincangkan bagaimana untuk mencapai fungsi ini dalam .NET.
Penyelesaian Menggunakan urlmon.dll
Penyelesaian yang disediakan menggunakan Perpustakaan Urlmon.dll untuk mengekstrak jenis MIME berdasarkan tandatangan fail. Kaedah ini boleh dilaksanakan melalui langkah -langkah berikut:
Memperkenalkan set pemasangan yang diperlukan:
Tentukan fungsi FindMimeFromData:
<code class="language-csharp">using System.Runtime.InteropServices;</code>
Buat fungsi yang mencari jenis MIME dari fail:
<code class="language-csharp">[DllImport(@"urlmon.dll", CharSet = CharSet.Auto)] private static extern uint FindMimeFromData( uint pBC, [MarshalAs(UnmanagedType.LPStr)] string pwzUrl, [MarshalAs(UnmanagedType.LPArray)] byte[] pBuffer, uint cbSize, [MarshalAs(UnmanagedType.LPStr)] string pwzMimeProposed, uint dwMimeFlags, out uint ppwzMimeOut, uint dwReserverd );</code>
<code class="language-csharp">public static string GetMimeFromFile(string filename) { // 为简洁起见,省略文件验证 byte[] buffer = new byte[256]; //... try { uint mimetype; FindMimeFromData(0, null, buffer, 256, null, 0, out mimetype, 0); IntPtr mimeTypePtr = new IntPtr(mimetype); string mime = Marshal.PtrToStringUni(mimeTypePtr); Marshal.FreeCoTaskMem(mimeTypePtr); return mime; } catch (Exception e) { return "unknown/unknown"; } }</code>
. Pelaksanaan lengkap memerlukan pemprosesan ralat yang diperlukan dan logik bacaan fail. Di samping itu, penggunaan kaedah mungkin bergantung kepada sistem operasi, dan masalah keserasian mungkin wujud dalam persekitaran yang berbeza. Penyelesaian yang lebih stabil mungkin perlu dipertimbangkan menggunakan perpustakaan .NET yang lain atau melaksanakan analisis tandatangan fail dengan sendirinya.
Atas ialah kandungan terperinci Bagaimana saya boleh menentukan jenis mime fail menggunakan tandatangan fail dalam .net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!