SORU
12 EYLÜL 2008, Cuma


Kullanarak .NET, nasıl bir dosya imza dayalı mıme tipi uzantısı olmaz mı

Basit bir şekilde dosya uzantısını yanlış veya verilmez, bir şey this question benzer sadece içinde bulunduğu bir mıme türü almak için arıyorum .Net.

CEVAP
15 EYLÜL 2008, PAZARTESİ


Sonunda urlmon.dll kullandım. Daha kolay bir yolu yok ama bu işe yarar diye düşündüm. Herkesten Yardım ve bana eğer istersem tekrar bulmak için izin vermek için kodu vardır.

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 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))
        {
            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";
        }
    }

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • hanksranger

    hanksranger

    6 EKİM 2009
  • HereWeStayKings

    HereWeStayKi

    3 NİSAN 2013