code: public long getTotalLength() {
  		long contentLen = 0;
  		for (FormBodyPart part : this.parts) {
  			ContentBody body = part.getBody();
  			long len = body.getContentLength();
  			if (len >= 0) {
  				contentLen += len;
  			}
  			else {
  				return -1;
  			}
  		}
  		ByteArrayOutputStream out = new ByteArrayOutputStream();
  		try {
  			doWriteTo(this.mode, out, false);
  			byte[] extra = out.toByteArray();
  			return contentLen + extra.length;
  		}
  		catch (IOException ex) {
  			// Should never happen
  			return -1;
  		}
  	}
docs: Determines the total length of the multipart content (content length of
  individual parts plus that of extra elements required to delimit the
  parts from one another). If any of the @{link BodyPart}s contained in
  this object is of a streaming entity of unknown length the total length
  is also unknown.
  <p/>
  This method buffers only a small amount of data in order to determine the
  total length of the entire entity. The content of individual parts is not
  buffered.
  
  @return total length of the multipart entity if known, <code>-1</code>
  otherwise.