如何从邮递员获取 CSV 文件并在 NestJs 上转换为数组
Posted
技术标签:
【中文标题】如何从邮递员获取 CSV 文件并在 NestJs 上转换为数组【英文标题】:How to get a CSV file from postman and Convert into array on NestJs 【发布时间】:2021-07-17 01:54:42 【问题描述】:我正在尝试使用单个端点创建一个 API,该端点接收 csv 文件并将其内容转换为 json 数组。
我正在使用 NestJs,我知道了如何使用 Postman 上传文件
这是我的控制器
@Controller('csv')
导出类 CsvController
constructor(private csvService: CsvService)
@Post()
@UseInterceptors(FileInterceptor('file'))
async uploadFile(@UploadedFile() file: any, @Res() res)
console.log(file)
//this is the service which Im trying to use to convert into json array
const resp = await this.csvService.parse(file)
res.send(file.buffer) //this just return the csv content
在服务中我添加了库 nest-csv-parser 但它需要一个流类型,流类型需要一个文件位置。所以我不知道如何转换从 Postman 收到的 CSV 文件,而不是将其放入我的项目中。
constructor(private readonly csvParser: CsvParser)
async parse(stream: any)
const str = createReadStream(stream)
const entities: any = await this.csvParser.parse(
str,
Person
)
console.log(entities)
关于我能做什么的任何想法?
如果我错过了,请告诉我!
【问题讨论】:
【参考方案1】:我怀疑您从该端点获得的文件是缓冲区。因此,在使用 csv 解析器之前,您需要将缓冲区转为流。为了将缓冲区转换为流,使用来自turning buffer to stream using NodeJS的可读流
【讨论】:
以上是关于如何从邮递员获取 CSV 文件并在 NestJs 上转换为数组的主要内容,如果未能解决你的问题,请参考以下文章
如何从 zip 中提取 csv 文件并在 python 中将其保存到磁盘? [复制]
当我们从 s3 中的 csv 文件读取数据并在 aws athena 中创建表时如何跳过标题。