zoukankan      html  css  js  c++  java
  • 利用Win32API 读取文件头获取MimeType

    第一个种方式利用Win32API 读取文件头获取Mime-Type

    [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 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";
    }
    }

    第二种方式 利用系统注册表查找Mime-Type

    using System.IO;
    using Microsoft.Win32;

    string GetMimeType(FileInfo fileInfo)
    {
    string mimeType = "application/unknown";

    RegistryKey regKey
    = Registry.ClassesRoot.OpenSubKey(
    fileInfo.Extension.ToLower()
    );

    if(regKey != null)
    {
    object contentType = regKey.GetValue("Content Type");

    if(contentType != null)
    mimeType
    = contentType.ToString();
    }

    return mimeType;
    }



    返回导读目录,阅读更多随笔



    分割线,以下为博客签名:

    软件臭虫情未了
    • 编码一分钟
    • 测试十年功


    随笔如有错误或不恰当之处、为希望不误导他人,望大侠们给予批评指正。

  • 相关阅读:
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    冒泡排序和选择排序
  • 原文地址:https://www.cnblogs.com/08shiyan/p/2063102.html
Copyright © 2011-2022 走看看