В сегодняшней записи блога мы погрузимся в мир загрузки файлов в 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 предоставляет несколько вариантов конфигурации для настройки поведения загрузки файлов. Давайте рассмотрим некоторые из них:
-
Установка папки назначения для загружаемых файлов:
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')); -
Ограничение размера файла:
const upload = multer({ storage, limits: { fileSize: 1024 * 1024 }, // 1MB }); -
Принятие только определенных типов файлов:
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!