Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk menentukan jenis mime fail menggunakan tandatangannya dalam .net?
Tentukan jenis mime
. NET Framework menyediakan kaedah tandatangan berasaskan fail dan bukannya memperluaskan jenis fail MIME Pengiktirafan nama. Ini amat berguna apabila memproses fail yang salah atau hilang.
Untuk menentukan jenis MIME, anda boleh menggunakan fungsi
yang dieksport. Fungsi ini menerima penampan byte tandatangan fail dan mengembalikan jenis mime. urlmon.dll
FindMimeFromData
Berikut adalah contoh cara menggunakan fungsi ini untuk menggunakan fungsi ini:
Kaedah ini menyediakan kaedah yang boleh dipercayai yang hanya boleh mendapatkan jenis mime berdasarkan tandatangan fail, tanpa mengira pelanjutan. Peningkatan kod adalah bahawa lebih tepat untuk mengendalikan bilangan bait yang dibaca untuk mengelakkan masalah potensi array menyeberangi sempadan.
<code class="language-csharp">using System.Runtime.InteropServices; ... [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 ); public static 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)) { int bytesRead = fs.Read(buffer, 0, 256); // Read at most 256 bytes if (bytesRead < 256) { Array.Resize(ref buffer, bytesRead); // Resize buffer if less than 256 bytes were read } } try { uint mimetype; FindMimeFromData(0, null, buffer, (uint)buffer.Length, 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>
Atas ialah kandungan terperinci Bagaimana untuk menentukan jenis mime fail menggunakan tandatangannya dalam .net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!