Простая загрузка файлов в определенную папку в NestJS: подробное руководство

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

Метод 1: использование промежуточного программного обеспечения Multer

Multer — популярное промежуточное программное обеспечение для обработки загрузки файлов в Node.js. Он легко интегрируется с NestJS и обеспечивает простой способ загрузки файлов в определенную папку. Вот как это можно сделать:

  1. Установите необходимые зависимости:

    npm install --save @nestjs/platform-express multer
  2. Импортируйте необходимые модули в ваш контроллер:

    import { Controller, Post, UploadedFile, UseInterceptors } from '@nestjs/common';
    import { FileInterceptor } from '@nestjs/platform-express';
    import { diskStorage } from 'multer';
  3. Реализовать конечную точку загрузки файла:

    @Controller('files')
    export class FilesController {
    @Post('upload')
    @UseInterceptors(FileInterceptor('file', { storage: diskStorage({
    destination: './uploads', // Specify your desired folder here
    filename: (req, file, cb) => {
      const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
      cb(null, file.fieldname + '-' + uniqueSuffix);
    },
    })}))
    async uploadFile(@UploadedFile() file) {
    // Handle the uploaded file here
    }
    }

Метод 2: использование встроенных инструментов NestJS для загрузки файлов

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

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

    import { Controller, Post, UploadedFile } from '@nestjs/common';
    import { diskStorage } from 'multer';
    import { FileInterceptor } from '@nestjs/platform-express';
  2. Реализовать конечную точку загрузки файлов:

    @Controller('files')
    export class FilesController {
    @Post('upload')
    @UseInterceptors(FileInterceptor('file', {
    storage: diskStorage({
      destination: './uploads', // Specify your desired folder here
      filename: (req, file, cb) => {
        const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
        cb(null, file.fieldname + '-' + uniqueSuffix);
      },
    }),
    }))
    async uploadFile(@UploadedFile() file) {
    // Handle the uploaded file here
    }
    }

Метод 3: использование специального обработчика экспресс-маршрута

Если вы предпочитаете более практический подход, вы можете создать собственный обработчик маршрута Express в своем приложении NestJS. Вот пример:

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

    import { Controller, Post, UploadedFile } from '@nestjs/common';
    import { Request, Response } from 'express';
    import * as multer from 'multer';
  2. Настройте маршрут загрузки файла:

    @Controller('files')
    export class FilesController {
    @Post('upload')
    async uploadFile(@Request() req: Request, @Response() res: Response) {
    const upload = multer({
      storage: multer.diskStorage({
        destination: './uploads', // Specify your desired folder here
        filename: (req, file, cb) => {
          const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
          cb(null, file.fieldname + '-' + uniqueSuffix);
        },
      }),
    }).single('file');
    upload(req, res, (err) => {
      if (err) {
        // Handle the upload error here
        return res.status(500).json({ error: err.message });
      }
    // Handle the uploaded file here
      return res.json({ message: 'File uploaded successfully' });
    });
    }
    }

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