nestjs 文件上传
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nestjs 文件上传相关的知识,希望对你有一定的参考价值。
参考技术A文件上传需要使用 拦截器 UseInterceptors 在\'@nestjs/common\'包内
拦截器功能参考: https://docs.nestjs.cn/7/interceptors
单文件上传
所需依赖有 FileInterceptor , UploadedFile
FileInterceptor 是拦截器负责处理请求接口后的文件 再使用UploadedFile 进行接受
多文件上传
所需依赖有 FilesInterceptor , UploadedFiles
基本操作与单文件上传一致 但注意依赖名不同,多文件上传有复数s
多文件上传自定义多个键名
所需依赖有 FileFieldsInterceptor , UploadedFiles
与上述操作基本不变 仅拦截方法变更,需要传入参数名数组
NestJS 中的 FileInterceptor 和 Body 问题(在请求中上传文件和数据)
【中文标题】NestJS 中的 FileInterceptor 和 Body 问题(在请求中上传文件和数据)【英文标题】:FileInterceptor and Body Issue in NestJS (upload a file and data in a request) 【发布时间】:2020-07-23 17:08:19 【问题描述】:我有以下控制器:
createCollection(
@UploadedFile() file,
@Body() createCollectionDto: CreateCollectionDto,
@GetUser() user: User,
): Promise<Collection>
this.logger.verbose(
`User "$
user.username
" creating a new collection. Data: $JSON.stringify(
createCollectionDto,
) of "$user.username"`,
);
if (file)
return this.collectionService.createCollection(
createCollectionDto,
user,
file,
);
else
throw new InternalServerErrorException('File needed');
我需要上传一个文件并在同一个查询中提供一些数据。
因为我要上传文件,所以我这样设置 Postman:
第一个问题:如何发送文件以及图片n°1中显示的数据?
我搜索了另一个 API 请求工具,发现 Postwoman
这是我使用的配置:
但是响应总是一样的:它没有检测到数据。 (即 name: foo, color: bar
)
第二个问题:我该如何解决这个问题?是否可以将数据放在文件中?如果可能的话,我怎样才能在 NestJS 中实现呢?
非常感谢您阅读我的问题 :) 任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:你已经很接近了。要在 Postman 的单个请求中上传文件和额外属性,您需要选择form-data
和不 x-www-form-urlencoded
。
这是一个简单的 NestJS 控制器,它显示您可以获取所有数据:
import Body, Controller, Post, UploadedFile, UseInterceptors from '@nestjs/common';
import FileInterceptor from '@nestjs/platform-express';
@Controller('upload-stack-overflow')
export class Upload***Controller
@Post('upload')
@UseInterceptors(FileInterceptor('file'))
uploadSingleFileWithPost(@UploadedFile() file, @Body() body)
console.log(file);
console.log(body.firstName);
console.log(body.favoriteColor);
【讨论】:
我发现了问题,谢谢,一如既往这是一个愚蠢的错误:我期待“图像”,但在邮递员中我给了名称“文件” 如何使用nestjs在数据库中的同一请求中上传数据和文件。你能帮我解决这个问题吗? ***.com/questions/69849722/…以上是关于nestjs 文件上传的主要内容,如果未能解决你的问题,请参考以下文章
如何使用nestJS将文件上传到mongoose上的mongodb?
如何使用 nestjs-graphql-fastify 服务器上传文件以及如何测试此类功能?