我能找到的最接近的东西是
System.Net.Mime.MediaTypeNames
,但它似乎没有包含所有内容(例如json),因为它似乎更专注于电子邮件附件。
枚举没有多大意义。 MIME 类型是开放式的。也就是说,列表不是有限的:不时添加新类型。
到 2022 年,随着 .NET Core 和 .NET 5+ 的出现,现在可以通过
MediaTypeNames
获得此功能。例如:
MediaTypeNames.Application.Json
MediaTypeNames.Image.Png
MediaTypeNames.Text.Html
有关 MediaTypeNames 以及每个应用程序、图像、文本的 Microsoft 文档。
2013 年更新: .NET 8 中添加了更多 MIME 类型,并且更加详尽: https://learn.microsoft.com/en-us/dotnet/api/system.net.mime.mediatypenames?view=net-8.0
IANA 的数据库 很可能是完整的。目前,他们在
https://www.iana.org/assignments/media-types/application.csv
提供了 CSV 格式的列表。我假设这是一个稳定的 URL,其内容会随着更新而变化。如果您想保持最新状态,您需要建立一个适合您需求的机制。
还有 Apache 附带的 mime.types 文件,它似乎源自上述列表。
如果像我一样,您希望代码中没有硬编码字符串,您可以使用如下所示的内容
httpHeaders.add(HttpHeaders.CONTENT_TYPE,MediaType.APPLICATION_JSON_VALUE);
本质上是
httpHeaders.add("Content-Type","application/json");
出于我自己的有限目的,我创建了一个静态类,它基本上是所包含的 .NET
MediaTypeNames
类的副本,但包含我需要的 MIME 类型; .NET MediaTypeNames
缺少我需要的值。
public static class MediaMimeTypes
{
/// <summary>
/// Specifies that the MediaMimeType is not interpreted.
/// </summary>
public const string Octet = "application/octet-stream";
/// <summary>
/// Specifies that the MediaMimeType is in a Comma Separated Values (CSV) format.
/// </summary>
public const string Csv = "text/csv";
}