上传文件

文件上传管理包

npm install multer
npm install @type/multer -D
// 引入包
import { MulterModule } from '@nestjs/platform-express'
// 设置配置信息,并初始化
// register() 方法是 MulterModule 的静态方法,用于在模块级别配置 multer 的行为。
const multerModule = MulterModule.register({
  // storage (存储引擎)
  storage: diskStorage({
    destination: join(__dirname, 'image'),
    filename: (req, file, callback) => {
      const fileName = `${new Date().getTime() + extname(file.originalname)}`
      return callback(null, fileName)
    },
  }),
  // fileFilter (文件过滤)
  fileFilter: (req, file, cb) => {
    if (!file.originalname.match(/\.(jpg|jpeg|png|gif)$/)) {
      return cb(new Error('Only image files are allowed!'), false)
    }
    cb(null, true)
  },
  // limits (限制设置)
  limits: {
    fileSize: 1024 * 1024 * 5, // 5MB
  },
})
// 注册到 moudle
@Module({
  imports: [multerModule],
})
import { FileInterceptor,FilesInterceptor } from '@nestjs/platform-express'
import {UploadedFile} from '@nestjs/common'
//@UseInterceptors() 是 NestJS 中一个非常重要的装饰器,用于应用拦截器 (Interceptor)。
@UseInterceptors(FileInterceptor('file'))
upload(@UploadedFile() file) {
  console.log(file)
  return 'DDD'
}

静态资源配置

import { NestExpressApplication } from '@nestjs/platform-express' // 指定底层框架
// 静态资源
app.useStaticAssets(join(__dirname, 'image'), {prefix: '/image',})