ChatGPT解决这个技术问题 Extra ChatGPT

PDF 文件的正确 MIME 媒体类型

在处理 PDF 时,我遇到过 MIME 类型 application/pdfapplication/x-pdf 等。

这两种类型之间有区别吗?如果有,那是什么?一个比另一个更受欢迎吗?

我正在开发一个必须提供大量 PDF 的网络应用程序,如果有的话,我想以正确的方式进行操作。


D
Dave Jarvis

标准媒体类型(以前称为 MIME 类型)是 application/pdf。分配在 RFC 3778, The application/pdf Media Type 中定义,引用自 Media Types registry

媒体类型由标准机构 The Internet Assigned Numbers Authority (IANA) 控制。这是管理根名称服务器和 IP 地址空间的同一组织。

x-pdf 的使用早于 PDF 媒体类型的标准化。 x- 命名空间中的媒体类型被认为是实验性的,就像 vnd. 命名空间中的媒体类型被认为是特定于供应商的。 x-pdf 可能用于与旧软件的兼容性。


2020 年更新: 此时,应使用 application/pdf 类型 - 除非您需要与非常旧的软件兼容,否则不要使用 x-pdf ...
MediaType在哪里使用?我们可以忽略 MimeKitMimePart 对象中的那些,并且电子邮件功能仍然有效
C
Community

这是 RFC 2045 - Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies 中定义的约定。

私有 [子类型] 值(以“X-”开头)可以在两个合作代理之间双边定义,无需外部注册或标准化。此类值无法注册或标准化。新标准值应按照 RFC 2048 中的说明向 IANA 注册。

类似的限制适用于顶级类型。来自同一来源,

如果出于任何原因要使用其他顶级类型,则必须为其命名以“X-”开头,以表明其非标准状态并避免与未来的正式名称发生潜在冲突。

(请注意,根据 RFC 2045,“[m] 媒体类型和子类型的匹配始终不区分大小写”,因此“X-”和“x-”的解释没有区别。)

因此可以公平地猜测,在 IANA 定义“application/foo”之前使用了“application/x-foo”。不知道 IANA 令牌分配的人可能仍会使用它。

正如 Chris Hanson 所说,MIME 类型由 IANA 控制。这在 RFC 2048 - Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures 中有详细说明。根据 RFC 3778,即 cited by the IANA 作为“application/pdf”的定义,

application/pdf 媒体类型由 Paul Lindner 于 1993 年首次注册,供 gopher 协议使用;随后,Steve Zilles 于 1994 年对注册进行了更新。

“application/pdf”类型已经存在了十多年。所以在我看来,在新应用程序中使用“application/x-pdf”的地方,这个决定可能不是经过深思熟虑的。


我正在使用 application/pdf 并且下载的 pdf 显示为损坏。
C
Community

来自维基百科媒体类型,

媒体类型由类型、子类型和可选参数组成。例如,一个 HTML 文件可能被指定为 text/html;字符集=UTF-8。媒体类型由顶级类型名称和子类型名称组成,并进一步构造成所谓的“树”。

top-level type name / subtype name [ ; parameters ]

top-level type name / [ tree. ] subtype name [ +suffix ] [ ; parameters ]

所有媒体类型都应使用 IANA 注册程序进行注册。当前创建了以下树:standardvendorpersonalvanity,未注册的 x.

标准:

标准树中的媒体类型不使用任何树方面(前缀)。

type / media type name [+suffix]

示例:“应用程序/xhtml+xml”、“图像/png”

小贩:

供应商树用于与公开可用产品相关的媒体类型。它使用 vnd。方面。

type / vnd. media type name [+suffix] - used in the case of well-known producer

type / vnd. producer's name followed by media type name [+suffix] - producer's name must be approved by IANA

type / vnd. producer's name followed by product's name [+suffix] - producer's name must be approved by IANA

个人或虚荣树:

个人或名利树包括实验性创建的媒体类型或作为非商业发行的产品的一部分。它使用prs。方面。

type / prs. media type name [+suffix]

未注册的 x。树:

“x”。 tree 可用于专门用于私人、本地环境的媒体类型,并且只有在交换双方的积极同意下才能使用。无法注册此树中的类型。根据 RFC 6838 的先前版本 - 已过时的 RFC 2048(1996 年 11 月发布),如果有的话,应该很少需要使用未注册的实验类型,因此同时使用“x-”和“x”。不鼓励使用表格。该 RFC 的先前版本 - RFC 1590 和 RFC 1521 声明子类型名称使用“x-”符号可用于未注册和私有子类型,但该建议在 1996 年 11 月被废弃。

type / x. media type name [+suffix]

因此很明显,标准类型 MIME 类型 application/pdf 是合适的类型,而您应该避免使用 RFC 2048RFC 6838 中所述的过时和未注册的 x- 媒体类型。