Nestjs Nest js上载未保存文件

Nestjs Nest js上载未保存文件,nestjs,multer,Nestjs,Multer,我正在遵循nestjs文档,我的端点正在获取文件,但文件没有存储 我使用的配置与NesJS相同 @Post('upload') @UseInterceptors(FileInterceptor('file')) uploadFile(@UploadedFile() file) { console.log(file); } 在我的app.module文件中,我添加了以下导入: MulterModule.register({ dest: './uploads' }) 但该

我正在遵循
nestjs
文档,我的端点正在获取文件,但文件没有存储

我使用的配置与NesJS相同

@Post('upload')
@UseInterceptors(FileInterceptor('file'))
uploadFile(@UploadedFile() file) {
  console.log(file);
}
在我的
app.module
文件中,我添加了以下导入:

MulterModule.register({
      dest: './uploads'
    })
但该文件未存储在
上传
目录中。完整日志为:

undefined
{
  fieldname: 'file',
  originalname: 'nopornimage.png',
  encoding: '7bit',
  mimetype: 'image/png',
  buffer: <Buffer 89 50 4e 47 0d 0a 1a 04 d00 01 73 52 47 42 00 ae ce 04 ... 20087 more bytes>,
  size: 20137
}
未定义
{
字段名:“文件”,
原始名称:“nopornimage.png”,
编码:“7bit”,
mimetype:'image/png',
缓冲区:,
尺码:20137
}
(是,包括未定义的


我做错了什么?

您应该指定目的地

@Post('upload'))
@UseInterceptors(FileInterceptor('file'){
dest:'上传/'
}))
uploadFile(@UploadedFile()文件){
console.log(文件);
}
或者您可以在
fs
模块中使用自己保存文件

从“fs”导入{createWriteStream}
@Post(‘上传’)
@UseInterceptors(FileInterceptor('file'))
uploadFile(@UploadedFile()文件){
const ws=createWriteStream('自定义文件名')
write(file.buffer)
console.log(文件);
}
  • 您应该在您的域模块中注册
    multer
    模块,而不是在应用程序中注册 模块(除非应用程序模块是项目中唯一的模块) 示例:如果控制器属于任务域,则应 在任务模块中注册
    multer
    ,而不是在应用程序模块中注册
  • 创建
    upload
    目录并在
    multer
    登记
  •    imports: [
         TypeOrmModule.forFeature([TaskRepository]),
         MulterModule.register({ dest: './upload' }),
       ],
       controllers: [TaskController],
       providers: [TaskService],
     })
     export class TaskModule {}