MIME Type 为何物:
MIME 参考手册
svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types

常规方式

对于有文件后缀名的,可以使用 MimeMapping.GetMimeMapping 获取。

MimeMapping.GetMimeMapping(String) Method (System.Web) | Microsoft Docs

如果 MimeMapping.GetMimeMapping 不认识的,会返回 application/octet-stream 这个默认值。

其它方式

对于特定的类型的文件,可以使用与之相关的其它方式获取,如 Image ,可以这样获取:

public bool TryBuildFileMimeType(string filePath, out string mimeType)
{if (string.IsNullOrWhiteSpace(filePath) || !System.IO.File.Exists(filePath)){mimeType = string.Empty;return false;}try{var image = Image.FromFile(filePath);mimeType = GetMimeTypeFromImage(image);return !string.IsNullOrWhiteSpace(mimeType);}catch (Exception ex){mimeType = string.Empty;return false;}
}private string GetMimeTypeFromImage(Image image)
{if (image.RawFormat.Equals(ImageFormat.Jpeg))return "image/jpeg";else if (image.RawFormat.Equals(ImageFormat.Bmp))return "image/bmp";else if (image.RawFormat.Equals(ImageFormat.Emf))return "image/emf";else if (image.RawFormat.Equals(ImageFormat.Exif))return "image/exif";else if (image.RawFormat.Equals(ImageFormat.Gif))return "image/gif";else if (image.RawFormat.Equals(ImageFormat.Icon))return "image/icon";else if (image.RawFormat.Equals(ImageFormat.Png))return "image/png";else if (image.RawFormat.Equals(ImageFormat.Tiff))return "image/tiff";else if (image.RawFormat.Equals(ImageFormat.Wmf))return "image/wmf";return string.Empty;
}

在我这里的实际场景中,大部分文件都有后缀名,即可以用 MimeMapping 处理,对于没有后缀名的,都是图片文件,可以用后面这种方式处理。

当然,还可以根据文件头内容,先获取文件类型,在找到对应的 MIME Type 。但这个需要自己维护一个文件头标识的表,不知道有没有现成的 NUGET 可以用,求推荐。

相关工具

5 Tools To Help Identify Unrecognized or Unknown File Types • Raymond.CC

ExifTool 这个工具很强大,可以看很多文件元数据信息,有命令行版本和GUI版本。

ExifTool by Phil Harvey
ExifToolGUI

其它

看到 How can I determine file type without an extension on Windows? - Super User ,
有个疑问,根据文件内容获取文件的类型/MIME type,本质上是不靠谱的?只能靠猜?只是对大部分常见文件类型,有固定格式而已?

毕竟文件内容是什么,开发者是可以任意控制的。

参考链接或相关链接:

  • c# - Get ImageFormat from System.Drawing.Image.RawFormat - Stack Overflow
  • c# - Guessing a file type based on its content - Code Review Stack Exchange
  • .NET获取文件的MIME类型(Content Type)
  • Get a File Content-Type / MIME-type from file extension in ASP.NET C#
  • NuGet Gallery | MimeMapping 1.0.1.17

原文链接:
https://www.cnblogs.com/jasongrass/p/11635454.html

转载于:https://www.cnblogs.com/jasongrass/p/11635454.html

[笔记] C# 如何获取文件的 MIME Type相关推荐

  1. java 设置mime type,java获取文件的mime type

    方法一 @Test public void whenUsingJava7_thenSuccess() { Path path = new File("product.png").t ...

  2. 无法读取服务器php文件mime类型,PHP获得文件的mime type类型

    /** * 获得文件的mime type类型 * @author xiaobing.meng * */ class MimeTypes { public static $mime_types = ar ...

  3. Android平台上获取文件的MIME

    /*** 使用系统API,根据url获得对应的MIME类型*/private String getMimeTypeFromUrl(String url) {String type = null;//使 ...

  4. Java怎样获取Content-Type的文件类型Mime Type

    在Http请求中.有时须要知道Content-Type类型,尤其是上传文件时.更为重要.尽管有些办法可以解决,但都不太准确或者繁琐,索性我发现一个开源的类库可以解决相对完美的解决问题,它就是jMime ...

  5. 获取文件的MIME类型

    package priv.lwx.javaex.servlet_demo.web.servletcontext; /*** 获取MIME类型** @author liaowenxiong* @date ...

  6. PHP笔记-通过输入获取文件夹中的文件和目录例子

    程序运行截图如下: 点击提交后打印此内容: 文件结构如下: 源码如下: dirFile.php <?phpfunction dirFile($dir, &$error){if(!is_d ...

  7. css文件的MIME错误引发的Jquery Mobile绘制错误

    静态文件serve设置的MIME不对,引起的浏览器警告 Resource interpreted as Stylesheet but transferred with MIME type applic ...

  8. .NET Core 批量重置 Azure Blob Storage 的 mime type

    点击上方蓝字关注"汪宇杰博客" 我的博客使用 Azure Blob Storage 存储文章配图,结果今天玩 Azure CDN 的时候爆了,原因是图片mime type不对.我们 ...

  9. Android官方开发文档Training系列课程中文版:分享文件之获取文件信息

    原文地址:http://android.xsoftlab.net/training/secure-file-sharing/retrieve-info.html 之前的课程讲述了客户端APP试图与含有 ...

最新文章

  1. Ubuntu中Atom安装与使用
  2. 虚拟机下Ubuntu没有GUI图形界面,解决方法
  3. Xshell 6 提示 要继续使用此程序,您必须应用最新的更新
  4. 如何突破JAVA程序员的分水岭
  5. linux下c语言俄罗斯方块,c语言做俄罗斯方块
  6. TCP Traffic Analyzer
  7. python commands_python之commands模块
  8. python南开大学王凯_王凯:长大后我也成了你
  9. qt 语言设置乱码_QT中文乱码与国际化支持
  10. 【ROM制作工具】线刷包转卡刷包制作教程
  11. HP5100常见错误代码
  12. 浅谈机器学习中的非线性
  13. bat 命令返回结果_bat教程[283] zip压缩
  14. 面试官:为什么 0.1 + 0.2 == 0.300000004 ?
  15. mtk智能机平台LCM,CTP的ESD防护处理
  16. 安卓webview长按分享,长按选择,长按复制,仿好奇心日报长按分享自定义弹窗的实现
  17. JAVA计算机毕业设计林家餐厅自助点餐管理系统(附源码、数据库)
  18. 利用SPI驱动12864液晶
  19. 使用 PHP 和 MySQL 的安全登录系统
  20. java -Linux 配置

热门文章

  1. 老婆童装店今天升5钻
  2. applyhatch无法识别
  3. Android毛玻璃(磨砂)效果(静态&动态背景图模糊 收集)
  4. 地理教师也可以这样有趣
  5. 【漏洞学习——沙盒跳出】————3、浙江省多家银行的自助机存在安全隐患
  6. Camera1.0和Camear2.0的区别
  7. 那一年我们都还高三~~~
  8. 2013年 各铁路局电话订票和互联网售票
  9. 根据返回的某一个字段值,去匹配数组对象的某一项, 返回对应的字段值
  10. java计算机毕业设计-智慧农业水果销售系统MyBatis+系统+LW文档+源码+调试部署