В этом руководстве мы рассмотрим несколько способов загрузки файлов в определенную папку в NestJS. NestJS — это мощная платформа для создания масштабируемых и эффективных серверных приложений с использованием Node.js и TypeScript. Мы сосредоточимся на использовании разговорного языка, предоставим примеры кода и рассмотрим различные методы обработки загрузки файлов. Итак, приступим!
Метод 1: использование промежуточного программного обеспечения Multer
Multer — популярное промежуточное программное обеспечение для обработки загрузки файлов в Node.js. Он легко интегрируется с NestJS и обеспечивает простой способ загрузки файлов в определенную папку. Вот как это можно сделать:
-
Установите необходимые зависимости:
npm install --save @nestjs/platform-express multer
-
Импортируйте необходимые модули в ваш контроллер:
import { Controller, Post, UploadedFile, UseInterceptors } from '@nestjs/common'; import { FileInterceptor } from '@nestjs/platform-express'; import { diskStorage } from 'multer';
-
Реализовать конечную точку загрузки файла:
@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 предоставляет встроенные инструменты для обработки загрузки файлов без необходимости использования дополнительного промежуточного программного обеспечения. Вот пример:
-
Импортируйте необходимые модули в ваш контроллер:
import { Controller, Post, UploadedFile } from '@nestjs/common'; import { diskStorage } from 'multer'; import { FileInterceptor } from '@nestjs/platform-express';
-
Реализовать конечную точку загрузки файлов:
@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. Вот пример:
-
Импортируйте необходимые модули в ваш контроллер:
import { Controller, Post, UploadedFile } from '@nestjs/common'; import { Request, Response } from 'express'; import * as multer from 'multer';
-
Настройте маршрут загрузки файла:
@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!