nestjs 实现文件上传及参数验证

当在 NestJS 中实现文件上传以及参数验证时,我们可以使用 multer 中间件来处理文件上传。

yarn add @nestjs/platform-express multer @types/multer

upload.controller.dto

import {
  Body,
  Controller,
  ParseFilePipe,
  Post,
  UploadedFile,
  UseInterceptors,
} from '@nestjs/common';
import { UploadService } from './upload.service';
import { uploadDto } from './dto/upload.dto';
import { Public } from 'src/common/constants/jwt.constants';
import { FileInterceptor } from '@nestjs/platform-express';

@Controller('upload')
export class UploadController {
  constructor(private readonly uploadService: UploadService) {}

  @Public()
  @Post('file')
  // FileInterceptor是multer实现的拦截器接收两个参数,第一个是文件的字段名,第二个是MulterOptions,用于MulterModule实现的本地磁盘上传,这里不做深入
  @UseInterceptors(FileInterceptor('file'))
  upload(
  	// 因为UploadedFile不参与参数管道认证,所以如果需要的话可以引入ParseFilePipe,配置见文档
    // @UploadedFile(new ParseFilePipe())
    // @UploadedFile装饰器 取出file字段
    @UploadedFile()
    // 在添加了@types/multer依赖后,会增加Express上增加Multer.Filter类型
    file: Express.Multer.File,
    // 非文件字段会保留在body中
    @Body() body: uploadDto,
  ) {
    console.log('🚀 ~ UploadController ~ file:', file);
    return this.uploadService.putFile(body.filename, file);
  }
}

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值