#文件扩展名 #MIME #扩展名

mime_guess2

一个简单的 crate,用于通过文件扩展名检测文件的 MIME 类型

2 个稳定版本

使用旧的 Rust 2015

2.0.5 2023 年 9 月 26 日

#148 in 文件系统

Download history 18325/week @ 2024-04-20 14314/week @ 2024-04-27 12382/week @ 2024-05-04 17445/week @ 2024-05-11 16853/week @ 2024-05-18 18839/week @ 2024-05-25 19377/week @ 2024-06-01 16602/week @ 2024-06-08 19834/week @ 2024-06-15 21566/week @ 2024-06-22 23921/week @ 2024-06-29 24318/week @ 2024-07-06 24339/week @ 2024-07-13 24582/week @ 2024-07-20 26545/week @ 2024-07-27 26197/week @ 2024-08-03

104,638 每月下载量
用于 105 个 crate (3 directly)

MIT 许可证

93KB
2K SLoC

mime_guess2 GitHub Workflow Status Crates.io

通过文件扩展名进行 MIME/MediaType 猜测。使用已知文件扩展名 -> MIME 类型映射的静态表。

返回贡献者:以下为新的提交要求

所需 Rust 版本:1.33

文档

版本控制

由于一个错误的提前发布,当前的 mime_guess2 公共依赖一个小于 1.0 的 mime,这意味着 mime 升级是破坏性更改,需要版本号的重大提升。请参考以下表格以找到与您的 mime 版本相匹配的 mime_guess2 版本

mime 版本 mime_guess2 版本
0.1.x, 0.2.x 1.x.y
0.3.x 2.x.y

注意:返回的 MIME 类型可能不稳定/无保证

对于给定扩展名的媒体类型不被认为是 crate 的稳定 API 的一部分,并且经常在补丁 (x.y.z + 1) 版本中更新以尽可能正确。MIME 变更是尽可能地回滚到先前的主要版本。

请注意,仅检查路径/文件名的扩展名以猜测 MIME 类型。位于该路径的文件可能或可能不是返回的 MIME 类型的有效文件。要小心关于文件结构或长度的不安全或不验证的假设。

一个扩展名也可能有多个适用的 MIME 类型。当返回多个时,第一个被认为是“最正确的”——下面将进行详细说明。

贡献

添加或纠正扩展名的 MIME 类型

文件扩展名的 MIME 类型错误或缺失吗?太好了!虽然对我们来说不是很好,但如果您想提交一个 pull request,那就太好了!

文件扩展名 -> MIME 类型映射列在 src/mime_types.rs 中。 列表按文件扩展名字典顺序排序,所有扩展名均为小写(适用时)。 前者是必要的,以支持在关闭 phf-map 功能时回退到二分搜索,以及维护者的清醒。后者只是为了保持一致性;搜索不区分大小写。

只需添加或更新适当的字符串对即可进行所需的修正。运行 cargo test 以确保库继续正确运行。

重要!引用修正后的 MIME 类型

当打开一个拉取请求时,请在 提交信息 中包含一个指向官方文档或 RFC 的链接,说明有关文件类型的正确 MIME 类型,以便提交历史可以作为审计线索。

尽管我们只是猜测,但我们喜欢尽可能准确。如果我们不必寻找佐证材料,这将使审核您的贡献变得容易得多。

每个扩展名支持多个 MIME 类型

截至 2.0.0,每个扩展名都支持多个 MIME 类型。对于给定扩展名的列表中的第一个 MIME 类型应该是“最正确”的,以便只关心获取单个 MIME 类型的用户可以使用 first*() 方法。

“正确”的定义是有争议的。在作者看来,这应该是针对给定文件格式定义的最新 IETF RFC,或者明确地超越所有其他类型。

如果官方 IANA 注册替换了旧的“实验性”风格的媒体类型,请在列表中将新类型放在旧类型之前,但保留旧类型以供参考

- ("md", &["text/x-markdown"]),
+ ("md", &["text/markdown", "text/x-markdown"]),

对 API 或 crate 操作的更改

我们欢迎对 crate 的 API 或其内部工作的更改,无论是否破坏,只要它提高了 crate 的整体操作、效率或用户体验。然而,在仓库上打开一个问题是个好主意,这样我们可以讨论您提出的更改并决定如何最佳地处理它们。

许可

MIT(有关更多信息,请参阅此仓库中的 LICENSE 文件。)

依赖项

~130KB