accepts StringIO as IO for multipart_post