Content-Length
isn't a requirement of multipart content. This issue of using lengths is addressed in part the old RFC:
5.2 Other data encodings rather than multipart
Various people have suggested using new mime top-level type
"aggregate", e.g., aggregate/mixed or a content-transfer-encoding of
"packet" to express indeterminate-length binary data, rather than
relying on the multipart-style boundaries. While this would be
useful, the "multipart" mechanisms are well established, simple to
implement on both the sending client and receiving server, and as
efficient as other methods of dealing with multiple combinations of
binary data.
That text isn't in the current one, though; length
doesn't appear in it at all.
This makes particular sense if you consider a sender sending the result of a stream as one part of a multipart post, when it may not know in advance the lenth of that stream's data. If length were required, it would need to either cache or read twice.