OLD | NEW |
---|---|
(Empty) | |
1 #MIME type package | |
2 | |
3 Package for working with MIME type definitions and for processing | |
4 streams of MIME multipart media types. | |
5 | |
6 ##Determining the MIME type for a file | |
7 | |
8 The instances of the `MimeTypeResolver` class is used to determine the | |
wibling
2015/02/18 13:44:45
NIT: I would not stress that it is the instances o
Søren Gjesse
2015/02/18 14:44:18
Done.
| |
9 MIME type for file. It supports both using the extention of the file | |
wibling
2015/02/18 13:44:46
TYPO: extention -> extension.
Søren Gjesse
2015/02/18 14:44:18
Done.
| |
10 name and possibly looking at magic bytes from the begining of the | |
wibling
2015/02/18 13:44:46
NIT: I would remove possibly. It is implicit in 'I
Søren Gjesse
2015/02/18 14:44:18
Done.
| |
11 file. | |
12 | |
13 There is a builtin instance of `MimeTypeResolver` accessible through | |
14 the top level function `lookupMimeType`. This builtin instance have | |
wibling
2015/02/18 13:44:45
NIT: have -> has
Søren Gjesse
2015/02/18 14:44:18
Done.
| |
15 the most common file name extensions and magic bytes registered. | |
16 | |
17 print(lookupMimeType('test.html')); // Will print text/html | |
18 print(lookupMimeType('test', [0xFF, 0xD8])); // Will print image/jpeg | |
19 print(lookupMimeType('test.html', [0xFF, 0xD8])); // Will print image/jpeg | |
20 | |
21 You can build you own resolver by instantiating `MimeTypeResolver` | |
wibling
2015/02/18 13:44:46
NIT: you -> your
NIT: by instantiating ... -> by
Søren Gjesse
2015/02/18 14:44:18
Changed to 'by creating an instance of'
| |
22 and adding file name extensions and magic bytes using `addExtension` | |
23 and `addMagicNumber`. | |
24 | |
25 ##Processing MIME multipart media types | |
26 | |
27 The class `MimeMultipartTransformer` is used to process a `Stream` of | |
28 bytes encoded using a MIME multipart media types encoding. The | |
29 transformer provides a new `Stream` of `MimeMultipart` objects each of | |
30 which have the headers and the content of each part. The content of a | |
31 part is provided as a strream of bytes. | |
wibling
2015/02/18 13:44:45
NIT: strream -> stream
Søren Gjesse
2015/02/18 14:44:18
Done.
| |
32 | |
33 An example of processing an HTTP request just printing the length of | |
34 the content of each part. | |
wibling
2015/02/18 13:44:46
I would change the above to:
Below is an example
Søren Gjesse
2015/02/18 14:44:18
Done.
| |
35 | |
36 // HTTP request with content type multipart/form-data. | |
37 HttpRequest request = ...; | |
38 // Determine the boundary form the content type header | |
39 String boundary = request.headers.contentType.parameters['boundary']; | |
40 | |
41 // Process the body just calculating the length of each part. | |
42 request.transform(new MimeMultipartTransformer(boundary)) | |
wibling
2015/02/18 13:44:46
boundary -> _?
Søren Gjesse
2015/02/18 14:44:18
The boundary value is from the variable above.
| |
43 .map((part) => part.fold(0, (p, d) => p + d)) | |
44 .listen((length) => print('Part with length $length')); | |
45 | |
46 Take a look at the `HttpBodyHandler` in the [http_server][1] package for | |
47 handling different content types in a HTTP request. | |
48 | |
49 [1]: https://pub.dartlang.org/packages/http_server | |
OLD | NEW |