c# - 如何从 .NET Core 中的 ContentType(MIME 类型)获取文件扩展名?

标签 c# asp.net .net .net-core mime

我正在将文件保存到 CosmosDB,我正在保存 FormFile 的 ContentType,然后使用它来填充 FileType 属性(类似于“pdf”或“msword”)。问题是 .doc 和 .docx(例如)有不同的 MIME 类型,我需要看到它们都转到“msword”属性,我正在寻找一种 SOLID 方法来做到这一点。我知道我必须以某种方式映射我自己的类,但我不确定从哪里开始。

最佳答案

ASP.NET Core 在文件扩展名和 MIME 类型之间有一个映射。此列表并不详尽,但它是一个好的开始(370 个条目)。此外,您需要反转字典中的键和值以满足您的需要。

源代码:https://github.com/aspnet/AspNetCore/blob/fa239f20a52defa06029f6a316846d6e190e05bb/src/Middleware/StaticFiles/src/FileExtensionContentTypeProvider.cs

如果您使用的是 Windows,则可以使用注册表来查找一些映射。您可以探索 HKEY_LOCAL_MACHINE\Software\Classes 以查找 mime 类型信息:https://learn.microsoft.com/en-us/windows/desktop/shell/fa-file-types

关于c# - 如何从 .NET Core 中的 ContentType(MIME 类型)获取文件扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56007440/

相关文章:

c# - 通过对象进行转换时不会调用 TryConvert

c# - try catch 的行为,最后在 c# 中使用 return 语句工作流程

c# - 如何使@Html.DropDownList() 允许空值

javascript - 服务器端重定向后未检测到 AngularJS ui-router 状态

javascript - 如何在异步方法asp net中显示警报

c# - MVC4 Bundle 中的 {version} 通配符

c# - 与 Specflow 并行运行 BDD 测试时,如何在 C# 中创建范围报告

c# - ManagementEventWatcher - 应用程序退出时出现 InvalidObjectException

.net - 将列表的枚举数传递给函数

c# - 为什么这个 LINQ 查询非常慢?