code: async def send_data(self):
          
          self.connection._ensure_alive()
          conn = self.connection
  
          try:
              await self._open_file()
              with self._file_object:
                  chunk_size = MAX_PACKET_LEN
                  while True:
                      chunk = await self._file_read(chunk_size)
                      if not chunk:
                          break
                      # TODO: consider drain data
                      conn.write_packet(chunk)
          except asyncio.CancelledError:
              self.connection._close_on_cancel()
              raise
          finally:
              # send the empty packet to signify we are done sending data
              conn.write_packet(b"")
docs: Send data packets from the local file to the server