Как правильно передать наименование файла в NestJS?

Чтобы передать наименование файла в NestJS (Node.js фреймворк для создания масштабируемых веб-приложений), вам нужно использовать модуль multer, который является middleware для обработки мультимедийных данных, включая файлы.

Давайте разберем, как правильно передать наименование файла в NestJS с использованием multer.

1. Установите multer с помощью npm или yarn:

npm install --save @nestjs/platform-express multer

2. Импортируйте multer и другие необходимые модули в вашем файле контроллера:

import { Controller, Post, UploadedFile, UseInterceptors } from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';

@Controller('files')
export class FilesController {
    @Post('upload')
    @UseInterceptors(FileInterceptor('file')) // указываем поле, в котором находится файл
    async uploadFile(@UploadedFile() file) {
        console.log(file.originalname); // получаем наименование файла
        return { filename: file.originalname };
    }
}

3. Создайте необходимый роутер и привяжите его к вашему контроллеру. Обратите внимание, что в примере выше мы использовали роутер /upload, который ожидает файл, передаваемый в поле с именем file. При загрузке файла эта информация будет доступна в методе uploadFile.

4. В вашем клиентском приложении (например, React Native), вы можете отправить файл на сервер, используя fetch или другой способ передачи данных. Пример вызова API с использованием fetch:

const formData = new FormData();
formData.append('file', {
    uri: 'file://path/to/your/file.jpg',
    type: 'image/jpeg',
    name: 'my-file'
});

fetch('http://your-server/files/upload', {
    method: 'POST',
    body: formData
})
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error));

Это пример того, как правильно передать наименование файла в NestJS из вашего клиентского приложения на React Native. Не забудьте настроить правильные пути и обработку ошибок в вашем коде.