def METHOD_NAME(self, filename, fileId, token=""):
    """
    Receive a file from the server
    :type filename: string / file descriptor / file object
    :param filename: File to receive from server
    :type fileId: any
    :param fileId: Identification of the file being received
    :type token: string
    :param token: Optional token for the file
    :return: S_OK/S_ERROR
    """
    fileHelper = FileHelper()
    if "NoCheckSum" in token:
        fileHelper.disableCheckSum()
    retVal = fileHelper.getDataSink(filename)
    if not retVal["OK"]:
        return retVal
    dS = retVal["Value"]
    closeAfterUse = retVal["closeAfterUse"]
    retVal = self._sendTransferHeader("ToClient", (fileId, token))
    if not retVal["OK"]:
        return retVal
    trid, transport = retVal["Value"]
    try:
        fileHelper.setTransport(transport)
        retVal = fileHelper.networkToDataSink(dS)
        if not retVal["OK"]:
            return retVal
        retVal = transport.receiveData()
        if closeAfterUse:
            dS.close()
        return retVal
    finally:
        self._disconnect(trid)