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

  • PlugResearch

    PlugResearch

    22 Mart 2006
  • UnboxTechnology

    UnboxTechnol

    20 Ocak 2011
  • Warner Bros. UK

    Warner Bros.

    6 HAZİRAN 2008