3 个版本

使用旧的 Rust 2015

0.1.2 2018年1月12日
0.1.1 2017年1月6日
0.1.0 2017年1月4日

#6 in #sniffer

Download history 1323/week @ 2024-03-14 1567/week @ 2024-03-21 1536/week @ 2024-03-28 1908/week @ 2024-04-04 1509/week @ 2024-04-11 1421/week @ 2024-04-18 1565/week @ 2024-04-25 1382/week @ 2024-05-02 1436/week @ 2024-05-09 1099/week @ 2024-05-16 1377/week @ 2024-05-23 1241/week @ 2024-05-30 1116/week @ 2024-06-06 1502/week @ 2024-06-13 1239/week @ 2024-06-20 781/week @ 2024-06-27

4,844 monthly downloads
用于 5 crates

Apache-2.0

42KB
643

mime-sniffer travis build crate

基于内容嗅探检测 MIME 类型。

文档

检测工作流程是从 Chromium 复制的。

更多详情,请阅读 如何确定 Mozilla 的 MIME 类型

用法

要使用 mime-sniffer,首先将以下内容添加到您的 Cargo.toml

[dependencies]
mime_sniffer = "^0.1"

然后,将其添加到您的 crate 根目录

extern crate mime_sniffer;

use mime_sniffer::MimeTypeSniffer;

然后,使用模块或散列函数

use mime_sniffer::MimeTypeSniffer;

assert_eq!(Some("application/pdf"), b"%PDF-1.5".sniff_mime_type());

示例

extern crate url;
#[macro_use]
extern crate mime;
extern crate mime_sniffer;

use url::Url;

use mime_sniffer::{HttpRequest, MimeTypeSniffer, MimeTypeSniffable, MimeTypeSnifferExt};

let url = Url::parse("https://127.0.0.1/notes.ppt").unwrap();
let req = HttpRequest {
    content: b"\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1",
    url: &url,
    type_hint: "text/plain",
};

assert!(req.should_sniff_mime_type());
assert_eq!(Some("application/vnd.ms-powerpoint"), req.sniff_mime_type());
assert_eq!(mime!(Application/("vnd.ms-powerpoint")),
           req.sniff_mime_type_ext().unwrap());
  • 要识别二进制文件类型,您可能需要与 rust 绑定的 rust-magic crate 一起使用 libmagiccrate
  • 要猜测 MIME 类型通过文件扩展名,您可能需要 mime_guess crate。 crate
  • 要将 MIME 类型作为强类型进行管理,您可能需要 mime.rs crate。 crate

依赖关系

~1.5MB
~50K SLoC