#file-extension #mime #extension

mime-infer

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

2 个稳定版本

使用旧的 Rust 2015

3.0.0 2023 年 11 月 26 日
2.0.5 2023 年 10 月 16 日

#410 in 文件系统

Download history 807/week @ 2024-04-10 992/week @ 2024-04-17 893/week @ 2024-04-24 790/week @ 2024-05-01 955/week @ 2024-05-08 1278/week @ 2024-05-15 1050/week @ 2024-05-22 1359/week @ 2024-05-29 1234/week @ 2024-06-05 939/week @ 2024-06-12 1134/week @ 2024-06-19 803/week @ 2024-06-26 612/week @ 2024-07-03 993/week @ 2024-07-10 876/week @ 2024-07-17 884/week @ 2024-07-24

3,452 每月下载量
用于 41 个 Crates (4 直接)

MIT 许可证

95KB
2K SLoC

mime_infer GitHub 工作流状态 Crates.io

通过文件扩展名推断 MIME 类型。使用已知的文件扩展名 -> MIME 类型映射的静态表。

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

所需 Rust 版本:1.33

文档

版本控制

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

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

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

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

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

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

贡献

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

文件扩展名的 MIME 类型错误或缺失吗?太好了!虽然对我们来说不是很好,但如果您想发起拉取请求,那就太好了!

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

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

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

在提交pull request时,请在提交信息中包含指向官方文档或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的整体操作、效率或人体工程学,我们欢迎对crate的API或其内部工作方式进行更改,无论是否破坏。然而,打开仓库中的一个问题是明智的,这样我们可以讨论您提出的更改并决定如何最好地处理它们。

许可证

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

依赖关系

~135KB