Upload service's upload not working
### Node Version

20.14.0

### NPM/Yarn/PNPM Version

NPM 10.7.0

### Strapi Version

5.10.3

### Operating System

MacOS

### Database

SQLite

### Javascript or Typescript

Typescript

### Reproduction URL

_No response_

### Bug Description

I'm trying to upload a file directly to Strapi via an internal CRON job - NOT using the REST API. To do that I am using the `strapi.plugin('upload').service('upload').upload()` method.

The upload fails, complaining about an empty `path` (see error log below) from somewhere inside the Strapi plugin.

### Steps to Reproduce

```
    const audioPath = 'sample.mp3'; // This existence of this file is validated prior to this
    const fileStats = fs.statSync(audioPath); // Get file metadata (size, etc.)

    const fileData = {
        path: audioPath,
        name: `someName.mp3`,
        type: 'audio/mpeg',
        size: fileStats.size,
    };

    const uploadFiles = {
        ...fileData,
        stream: fs.createReadStream(audioPath),
    }

    console.log(uploadFiles);
    // Log output is as follows:
    /*
        {
            path: 'sample.mp3',
            name: 'someName.mp3',
            type: 'audio/mpeg',
            size: 13292773
            stream: [is here, but shortened for github...]
        }

    * */

    // THIS throws the error
    const uploadedFile = await strapi.plugin('upload').service('upload').upload({
        data: {},
        files: uploadFiles,
    });
```

### Expected Behavior

The method `strapi.plugin('upload').service('upload').upload()` should upload the file to Strapi and return a persisted document.

### Logs

```shell
node:internal/fs/streams:185
    validatePath(this.path);
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string or an instance of Buffer or URL. Received undefined
    at new ReadStream (node:internal/fs/streams:185:5)
    at Object.createReadStream (node:fs:3087:10)
    at currentFile.getStream (/Users/janemge-triebel/Projects/lumo-next/lumo/node_modules/@strapi/upload/dist/server/chunks/index-BkUy20d9.js:904:40)
    at Object.upload (/Users/janemge-triebel/Projects/lumo-next/lumo/node_modules/@strapi/upload/dist/server/chunks/index-BkUy20d9.js:765:36)
    at uploadFileAndPersist (/Users/janemge-triebel/Projects/lumo-next/lumo/node_modules/@strapi/upload/dist/server/chunks/index-BkUy20d9.js:1003:42)
    at async Promise.all (index 0)
    at async Object.upload (/Users/janemge-triebel/Projects/lumo-next/lumo/node_modules/@strapi/upload/dist/server/chunks/index-BkUy20d9.js:935:29)
    at async Object.createStoryAudio [as task] (/Users/janemge-triebel/Projects/lumo-next/lumo/dist/src/jobs/createStoryAudio.js:119:26)
Emitted 'error' event on Job instance at:
    at /Users/janemge-triebel/Projects/lumo-next/lumo/node_modules/node-schedule/lib/Invocation.js:277:17 {
  code: 'ERR_INVALID_ARG_TYPE'
}

Node.js v20.14.0
```

### Code Snippets

Provided above in Steps to Reproduce

### Media

_No response_

### Additional information

There are similar forum entries to this, but none without an answer. For example: 
* https://forum.strapi.io/t/how-to-create-upload-an-image-from-the-backend-from-a-url/38470
* https://forum.strapi.io/t/strapi-upload-plugin-upload-files-programmatically-using-a-different-plugin/35386

### Confirmation Checklist

- [x] I have checked the existing [issues](https://github.com/strapi/strapi/issues) for duplicates.
- [x] I agree to follow this project's [Code of Conduct](https://github.com/strapi/strapi/blob/develop/CODE_OF_CONDUCT.md).