code: func (h *UploadHandle) readerAndSize() (io.Reader, int64, error) {
  	if h.Size > 0 {
  		return h.Contents, int64(h.Size), nil
  	}
  	var b bytes.Buffer
  	n, err := io.Copy(&b, h.Contents)
  	if err != nil {
  		return nil, 0, err
  	}
  	return &b, n, nil
  }
docs: // Figure out the size of the contents.
  // If the size was provided, trust it.