<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def upload(self, fp, token=None, target_name=None, content_type=None):
 """ Upload a file to Zendesk. :param fp: file object, StringIO instance, content, or file path to be uploaded :param token: upload token for uploading multiple files :param target_name: name of the file inside Zendesk :return: :class:`Upload` object containing a token and other information see Zendesk API `Reference <https://developer.zendesk.com/rest_api/docs/core/attachments#uploading-files>`__. """

        return UploadRequest(self).post(fp, token=token, target_name=target_name, content_type=content_type)