Загрузка файлов стала проще с помощью Multer в NestJS

В сегодняшней записи блога мы погрузимся в мир загрузки файлов в NestJS и узнаем, как упростить этот процесс с помощью Multer. Multer — это мощный модуль промежуточного программного обеспечения для Express и NestJS, который упрощает обработку файлов. Независимо от того, создаете ли вы платформу для социальных сетей, сайт электронной коммерции или любое приложение, требующее загрузки файлов, Multer поможет вам. Итак, давайте начнем и узнаем, как интегрировать Multer в ваше приложение NestJS!

Настройка Multer в NestJS:
Сначала нам нужно установить необходимые зависимости. Откройте терминал и перейдите в каталог проекта NestJS. Для установки Multer выполните следующую команду:

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

После завершения установки давайте настроим Multer в нашем приложении NestJS. Откройте файл main.tsи добавьте следующий код:

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { NestExpressApplication } from '@nestjs/platform-express';
import * as multer from 'multer';
async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);

  app.use(multer().array('files')); // Enable file upload support

  await app.listen(3000);
}
bootstrap();

Настройка Multer:
Multer предоставляет несколько вариантов конфигурации для настройки поведения загрузки файлов. Давайте рассмотрим некоторые из них:

  1. Установка папки назначения для загружаемых файлов:

    const storage = multer.diskStorage({
    destination: (req, file, cb) => {
    cb(null, 'uploads/');
    },
    filename: (req, file, cb) => {
    cb(null, file.originalname);
    },
    });
    const upload = multer({ storage });
    app.use(upload.array('files'));
  2. Ограничение размера файла:

    const upload = multer({
    storage,
    limits: { fileSize: 1024 * 1024 }, // 1MB
    });
  3. Принятие только определенных типов файлов:

    const upload = multer({
    storage,
    fileFilter: (req, file, cb) => {
    if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png') {
      cb(null, true);
    } else {
      cb(new Error('Invalid file type'));
    }
    },
    });

Обработка загрузки файлов:
Теперь, когда у нас настроен Multer, давайте обработаем загрузку файлов в контроллере. Создайте новый контроллер или откройте существующий и добавьте следующий код:

import { Controller, Post, UploadedFiles, UseInterceptors } from '@nestjs/common';
import { FilesInterceptor } from '@nestjs/platform-express';
@Controller('files')
export class FilesController {
  @Post('upload')
  @UseInterceptors(FilesInterceptor('files'))
  async uploadFiles(@UploadedFiles() files) {
    // Handle uploaded files
    console.log(files);
  }
}

В приведенном выше коде мы определяем конечную точку /files/upload, которая принимает загрузку файлов. Декоратор FilesInterceptorиз @nestjs/platform-expressуправляет процессом загрузки файла. Доступ к загруженным файлам можно получить в методе uploadFilesс помощью декоратора @UploadedFiles.

В этой записи блога мы рассмотрели, как интегрировать Multer в ваше приложение NestJS для упрощения загрузки файлов. Мы рассмотрели настройку Multer, настройку поведения загрузки файлов и обработку загрузки файлов в контроллере. Multer упрощает процесс загрузки файлов, упрощая создание приложений, требующих эту функциональность. Так что вперед и улучшайте свое приложение NestJS, включив Multer!