上传文件时如何获得对象数组?



我有一个允许上传多个文件的请求。但在响应中,我以单个对象的形式获得数据。我如何得到一个对象数组的响应?

我是否需要创建另一个服务?

控制器:

@Post('upload')
@UseInterceptors(FileInterceptor('file'))
async uploadFile(@UploadedFile() file: Express.Multer.File, @Req() request: Request) {
const files = await this.fileService.create({
name: file.originalname,
path: file.originalname,
type: file.originalname.split('.').pop(),
size: file.size,
user: request.user.user_id,
parent: request.body.parent || undefined,
});
return files;
}

服务:

async create(data: any): Promise<any> {
return this.repository.save(data);
}

当前在您的代码中,控制器只处理一个文件。要处理多个文件,您需要使用FilesInterceptorUploadedFiles装饰器。

那么你的代码就会变成这样:

import { Express } from 'express';
import { UploadedFiles } from '@nestjs/common';
import { FilesInterceptor } from '@nestjs/platform-express';
@Post('upload')
@UseInterceptors(FilesInterceptor('files'))
async uploadFile(@UploadedFiles() files: Array<Express.Multer.File>, @Req() request: Request) {
// rest of code
}

或者如果每个字段有唯一的名称:

@Post('upload')
@UseInterceptors(FileFieldsInterceptor([
{ name: 'avatar', maxCount: 1 },
{ name: 'background', maxCount: 1 },
]))
uploadFile(@UploadedFiles() files: { avatar?: Express.Multer.File[], background?: Express.Multer.File[] }) {
console.log(files);
}

最新更新