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

mime_guess

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

25个稳定版本

使用旧的Rust 2015

2.0.5 2024年6月29日
2.0.4 2022年2月16日
2.0.3 2020年2月28日
2.0.1 2019年8月5日
1.1.1 2015年7月5日

#15 in 文件系统

Download history 633635/week @ 2024-05-03 659566/week @ 2024-05-10 687989/week @ 2024-05-17 655688/week @ 2024-05-24 693597/week @ 2024-05-31 696463/week @ 2024-06-07 672731/week @ 2024-06-14 712688/week @ 2024-06-21 688528/week @ 2024-06-28 689297/week @ 2024-07-05 698703/week @ 2024-07-12 723385/week @ 2024-07-19 725197/week @ 2024-07-26 722309/week @ 2024-08-02 760856/week @ 2024-08-09 757733/week @ 2024-08-16

3,110,544 每月下载量
用于 5,410 个crate (497直接)

MIT 许可证

96KB
2K SLoC

mime_guess GitHub Workflow Status Crates.io

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

贡献者回报:以下为新要求

所需Rust版本:1.33

文档

版本控制

由于误判的提前发布,mime_guess 目前公开依赖于一个低于1.0的 mime,这意味着 mime 升级是破坏性更改,需要主要版本号的提升。请参阅以下表格以找到与您的 mime 版本相匹配的 mime_guess 版本

mime 版本 mime_guess 版本
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请求,那对您来说就是好事!

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

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

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

在提交pull request时,请在提交信息中包含一个指向官方文档或RFC的链接,该文档或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文件。)

依赖项

~135KB