HttpWebResponse 上的 ContentType 属性是否有枚举(“text/plain”、“application/octet-stream”等)?

问题描述 投票:0回答:5

我能找到的最接近的东西是

System.Net.Mime.MediaTypeNames
,但它似乎没有包含所有内容(例如json),因为它似乎更专注于电子邮件附件。

content-type mime-types httpwebresponse
5个回答
32
投票

枚举没有多大意义。 MIME 类型是开放式的。也就是说,列表不是有限的:不时添加新类型。

参见 RFC4288:媒体类型规范和注册程序


9
投票

到 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


3
投票

IANA 的数据库 很可能是完整的。目前,他们在

https://www.iana.org/assignments/media-types/application.csv
提供了 CSV 格式的列表。我假设这是一个稳定的 URL,其内容会随着更新而变化。如果您想保持最新状态,您需要建立一个适合您需求的机制。

还有 Apache 附带的 mime.types 文件,它似乎源自上述列表。


1
投票

如果像我一样,您希望代码中没有硬编码字符串,您可以使用如下所示的内容

httpHeaders.add(HttpHeaders.CONTENT_TYPE,MediaType.APPLICATION_JSON_VALUE);

本质上是

httpHeaders.add("Content-Type","application/json");


1
投票

出于我自己的有限目的,我创建了一个静态类,它基本上是所包含的 .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";
}
© www.soinside.com 2019 - 2024. All rights reserved.