Rumah > pembangunan bahagian belakang > C++ > Bagaimana saya boleh menentukan jenis mime fail menggunakan tandatangan fail dalam .net?

Bagaimana saya boleh menentukan jenis mime fail menggunakan tandatangan fail dalam .net?

Susan Sarandon
Lepaskan: 2025-01-31 14:56:13
asal
470 orang telah melayarinya

How Can I Determine a File's MIME Type Using File Signatures in .NET?

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:
  1. Tentukan fungsi FindMimeFromData:
    <code class="language-csharp">using System.Runtime.InteropServices;</code>
    Salin selepas log masuk
  2. 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>
    Salin selepas log masuk
  3. Gunakan fungsi getMimeFromFile untuk mendapatkan jenis mime:

    <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>
    Salin selepas log masuk
  4. Sila ambil perhatian bahawa sesetengah kod ditinggalkan dalam serpihan kod di atas, seperti 256 bait pertama membaca fail ke array

    . 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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan