Skip to content

Commit 4b1ed71

Browse files
juli1AndyGauge
authored andcommitted
Mime type from filename
2 parents 254ee9b + ef082e7 commit 4b1ed71

File tree

5 files changed

+45
-0
lines changed

5 files changed

+45
-0
lines changed

libtest.rmeta

Whitespace-only changes.

src/encoding.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@
3232
[ex-toml-config]: encoding/complex.html#deserialize-a-toml-configuration-file
3333
[ex-byteorder-le]: encoding/complex.html#read-and-write-integers-in-little-endian-byte-order
3434

35+
3536
{{#include links.md}}

src/web.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
| Recipe | Crates | Categories |
2424
|--------|--------|------------|
2525
| [Get MIME type from string][ex-mime-from-string] | [![mime-badge]][mime] | [![cat-encoding-badge]][cat-encoding] |
26+
| [Get MIME type from filename][ex-mime-from-filename] | [![mime-badge]][mime] | [![cat-encoding-badge]][cat-encoding] |
2627
| [Parse the MIME type of a HTTP response][ex-http-response-mime-type] | [![mime-badge]][mime] [![reqwest-badge]][reqwest] | [![cat-net-badge]][cat-net] [![cat-encoding-badge]][cat-encoding] |
2728

2829

@@ -39,6 +40,7 @@
3940
[ex-url-rm-frag]: web/url.html#remove-fragment-identifiers-and-query-pairs-from-a-url
4041

4142
[ex-mime-from-string]: web/mime.html#get-mime-type-from-string
43+
[ex-mime-from-filename]: web/mime.html#get-mime-type-from-filename
4244
[ex-http-response-mime-type]: web/mime.html#parse-the-mime-type-of-a-http-response
4345

4446
{{#include links.md}}

src/web/mime.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
{{#include mime/string.md}}
44

5+
{{#include mime/filename.md}}
6+
57
{{#include mime/request.md}}
68

79
{{#include ../links.md}}

src/web/mime/filename.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
## Get MIME type from filename
2+
3+
[![mime-badge]][mime] [![cat-encoding-badge]][cat-encoding]
4+
5+
The following example shows how to return the correct MIME type from a given
6+
filename using the [mime] crate. The program will check for file extensions
7+
and match against a known list. The return value is [`mime:Mime`].
8+
9+
```rust
10+
extern crate mime;
11+
use mime::Mime;
12+
13+
fn find_mimetype (filename : &String) -> Mime{
14+
15+
let parts : Vec<&str> = filename.split('.').collect();
16+
17+
let res = match parts.last() {
18+
Some(v) =>
19+
match *v {
20+
"png" => mime::IMAGE_PNG,
21+
"jpg" => mime::IMAGE_JPEG,
22+
"json" => mime::APPLICATION_JSON,
23+
&_ => mime::TEXT_PLAIN,
24+
},
25+
None => mime::TEXT_PLAIN,
26+
};
27+
return res;
28+
}
29+
30+
fn main() {
31+
let filenames = vec!("foobar.jpg", "foo.bar", "foobar.png");
32+
for file in filenames {
33+
let mime = find_mimetype(&file.to_owned());
34+
println!("MIME for {}: {}", file, mime);
35+
}
36+
37+
}
38+
```
39+
40+
[`mime:Mime`]: https://docs.rs/mime/*/mime/struct.Mime.html

0 commit comments

Comments
 (0)