def METHOD_NAME(self, oss_object_name: str, local_file_path: str,
           indicate_individual_progress: bool,
           upload_mode: UploadMode) -> str:
    retry_count = 0
    object_key = os.path.join(self.oss_dir, oss_object_name)
    if indicate_individual_progress:
        progress_callback = self._percentage
    else:
        progress_callback = None
    while True:
        try:
            retry_count += 1
            exist = self.bucket.object_exists(object_key)
            if upload_mode == UploadMode.APPEND and exist:
                logger.info(
                    f'Skip {oss_object_name} in case of {upload_mode.value} mode.'
                )
                break
            oss2.resumable_upload(
                self.bucket,
                object_key,
                local_file_path,
                store=self.resumable_store_upload,
                multipart_threshold=self.multipart_threshold,
                part_size=self.part_size,
                progress_callback=progress_callback,
                num_threads=self.num_threads)
            break
        except Exception as e:
            if e.__dict__.get('status') == 403:
                self._reload_sts()
            if retry_count >= self.max_retries:
                raise
    return object_key