def METHOD_NAME(self):
    """Return a binary buffer containing the form data, including attached files."""
    part_boundary = '--' + self.boundary
    binary = io.BytesIO()
    needs_clrf = False
    # Add the form fields
    for name, value in self.form_fields:
        if needs_clrf:
            binary.write('\r\n')
        needs_clrf = True
        block = [part_boundary,
                 'Content-Disposition: form-data; name="%s"' % name,
                 '',
                 value
                 ]
        binary.write('\r\n'.join(block))
    # Add the files to upload
    for field_name, filename, content_type, body in self.files:
        if needs_clrf:
            binary.write('\r\n')
        needs_clrf = True
        block = [part_boundary,
                 str('Content-Disposition: file; name="%s"; filename="%s"' %
                     (field_name, filename)),
                 'Content-Type: %s' % content_type,
                 ''
                 ]
        binary.write('\r\n'.join(block))
        binary.write('\r\n')
        binary.write(body)
    # add closing boundary marker,
    binary.write('\r\n--' + self.boundary + '--\r\n')
    return binary