<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(auth_http, project_id, bucket_name, file_path, object_name, acl):
 """Uploads a file to Google Cloud Storage. Args: auth_http: An authorized httplib2.Http instance. project_id: The project to upload to. bucket_name: The bucket to upload to. file_path: Path to the file to upload. object_name: The name within the bucket to upload to. acl: The ACL to assign to the uploaded file. """

    with open(file_path, 'rb') as f:
        data = f.read()
    content_type, content_encoding = mimetypes.guess_type(file_path)

    headers = {
        'x-goog-project-id': project_id,
        'x-goog-api-version': API_VERSION,
        'x-goog-acl': acl,
        'Content-Length': '%d' % len(data)
    }
    if content_type: headers['Content-Type'] = content_type
    if content_type: headers['Content-Encoding'] = content_encoding

    try:
        response, content = auth_http.request(
            'http://%s.storage.googleapis.com/%s' % (bucket_name, object_name),
            method='PUT',
            headers=headers,
            body=data)
    except httplib2.ServerNotFoundError, se:
        raise Error(404, 'Server not found.')

    if response.status >= 300:
        raise Error(response.status, response.reason)

    return content