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



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



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

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


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

  • 相关阅读:
    查看pip install *.whl 支持的文件版本
    spark Infinate 的处理
    nc 文件的nan识别
    mysql 存中文失败问题
    tensorflow 安装
    数据库存含中文的json 时避免存成中文的ascii
    python 继承中的__init__
    python mysql数据库中 json的存储
    python 版本配置问题
    python dict 实现swich
  • 原文地址:https://www.cnblogs.com/08shiyan/p/2063102.html
Copyright © 2011-2022 走看看