Update upload functions to accept a io.Reader and return the remote publicId