Vin*_*tes 2 multipartform-data dto multer nestjs
在我的后端,我有这个端点:
@Post()
@UseInterceptors(FilesInterceptor('files'))
create(
@UploadedFiles() files: Array<Express.Multer.File>,
@Body() body: MyDto,
) {
console.log(body);
console.log(files);
}
Run Code Online (Sandbox Code Playgroud)
MyDto很简单:
export class MyDto {
year: string
}
Run Code Online (Sandbox Code Playgroud)
当我multipart/form-data仅使用字段或与一个或多个文件一起发送请求(在 Firefox、Chrome 和 Postman 上尝试使用代码)时year,我从第一个console.log(打印 的那个body)中得到:
MyDto {}
Run Code Online (Sandbox Code Playgroud)
当我从正文中删除输入时,端点变为:
@Post()
@UseInterceptors(FilesInterceptor('files'))
create(
@UploadedFiles() files: Array<Express.Multer.File>,
@Body() body,
) {
console.log(body);
console.log(files);
}
Run Code Online (Sandbox Code Playgroud)
本体如图所示:
[Object: null prototype] { year: '2022' }
Run Code Online (Sandbox Code Playgroud)
变量files总是正确的。
如何设置正文的类型?
我main.ts的如下:
const app = await NestFactory.create(AppModule, {
logger: ['log', 'error'],
});
app.enableCors();
app.useGlobalPipes(
new ValidationPipe({
whitelist: true,
transform: true,
})
);
app.use(bodyParser.json({limit: '1mb'}));
app.use(bodyParser.urlencoded({limit: '1mb', extended: true}));
const appVersion = '0.0.1';
const port = process.env.PORT || 3000;
await app.listen(port);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4887 次 |
| 最近记录: |