[笔记] C# 如何获取文件的 MIME Type
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相关推荐
- java 设置mime type,java获取文件的mime type
方法一 @Test public void whenUsingJava7_thenSuccess() { Path path = new File("product.png").t ...
- 无法读取服务器php文件mime类型,PHP获得文件的mime type类型
/** * 获得文件的mime type类型 * @author xiaobing.meng * */ class MimeTypes { public static $mime_types = ar ...
- Android平台上获取文件的MIME
/*** 使用系统API,根据url获得对应的MIME类型*/private String getMimeTypeFromUrl(String url) {String type = null;//使 ...
- Java怎样获取Content-Type的文件类型Mime Type
在Http请求中.有时须要知道Content-Type类型,尤其是上传文件时.更为重要.尽管有些办法可以解决,但都不太准确或者繁琐,索性我发现一个开源的类库可以解决相对完美的解决问题,它就是jMime ...
- 获取文件的MIME类型
package priv.lwx.javaex.servlet_demo.web.servletcontext; /*** 获取MIME类型** @author liaowenxiong* @date ...
- PHP笔记-通过输入获取文件夹中的文件和目录例子
程序运行截图如下: 点击提交后打印此内容: 文件结构如下: 源码如下: dirFile.php <?phpfunction dirFile($dir, &$error){if(!is_d ...
- css文件的MIME错误引发的Jquery Mobile绘制错误
静态文件serve设置的MIME不对,引起的浏览器警告 Resource interpreted as Stylesheet but transferred with MIME type applic ...
- .NET Core 批量重置 Azure Blob Storage 的 mime type
点击上方蓝字关注"汪宇杰博客" 我的博客使用 Azure Blob Storage 存储文章配图,结果今天玩 Azure CDN 的时候爆了,原因是图片mime type不对.我们 ...
- Android官方开发文档Training系列课程中文版:分享文件之获取文件信息
原文地址:http://android.xsoftlab.net/training/secure-file-sharing/retrieve-info.html 之前的课程讲述了客户端APP试图与含有 ...
最新文章
- Ubuntu中Atom安装与使用
- 虚拟机下Ubuntu没有GUI图形界面,解决方法
- Xshell 6 提示 要继续使用此程序,您必须应用最新的更新
- 如何突破JAVA程序员的分水岭
- linux下c语言俄罗斯方块,c语言做俄罗斯方块
- TCP Traffic Analyzer
- python commands_python之commands模块
- python南开大学王凯_王凯:长大后我也成了你
- qt 语言设置乱码_QT中文乱码与国际化支持
- 【ROM制作工具】线刷包转卡刷包制作教程
- HP5100常见错误代码
- 浅谈机器学习中的非线性
- bat 命令返回结果_bat教程[283] zip压缩
- 面试官:为什么 0.1 + 0.2 == 0.300000004 ?
- mtk智能机平台LCM,CTP的ESD防护处理
- 安卓webview长按分享,长按选择,长按复制,仿好奇心日报长按分享自定义弹窗的实现
- JAVA计算机毕业设计林家餐厅自助点餐管理系统(附源码、数据库)
- 利用SPI驱动12864液晶
- 使用 PHP 和 MySQL 的安全登录系统
- java -Linux 配置