The SlackAPIFileOperator is not straight forward and it might be better to add an example DAG to demonstrate the usage.

airflow/providers/slack/operators/slack.py
if self.content is not None:
            self.api_params = {
                'channels': self.channel,
                'content': self.content,
                'initial_comment': self.initial_comment,
            }
        elif self.filename is not None:
            self.api_params = {
                'channels': self.channel,
                'filename': self.filename,
                'filetype': self.filetype,
                'initial_comment': self.initial_comment,
            }
            self.file_params = {'file': self.filename}
    def execute(self, **kwargs):
        """
        The SlackAPIOperator calls will not fail even if the call is not unsuccessful.
        It should not prevent a DAG from completing in success
        """
        if not self.api_params:
            self.construct_api_call_params()
        slack = SlackHook(token=self.token, slack_conn_id=self.slack_conn_id)
        slack.call(self.method, data=self.api_params, files=self.file_params)