ajax调用上传文件接口,node.js - 通过POST请求上传文件并向API发送信息 - 堆栈内存溢出...

所以我有一个变异,需要一个文件。 它需要读取文件并将带有数据的POST请求发送到API。 目前,我不知何故无法正确读取流,并通过POST请求将信息发送到我的api,而没有任何文件信息。

我不太确定如何正确读取文件。 此外,Apollo服务器仅执行json,而不执行多格式数据。 如果我使用axios,则将混乱我拥有的数据类型。

我在这里想念什么?

架构:

input UploadDocumentType {

file: Upload!

}

type Task {

filename: String!

mimetype: String!

encoding: String!

id: ID!

}

type UploadDocumentPayload {

file: Task

}

type Mutation {

uploadDocument(input: UploadDocumentType!): UploadDocumentPayload

}

我在下面返回了基本数据。 但是我想从响应中获取ID。

解析器:

const Mutation: MutationResolvers = {

async uploadDocument(_, args: MutationUploadDocumentArgs, ctx: Context) {

const { createReadStream, filename, mimetype, encoding } = await args.input.file

const res = ctx.dataSources.taskService.postTask(createReadStream);

return {

file: {filename, mimetype, encoding, id}

}

}

}

我有两个版本的任务。 一个使用Axios,另一个使用Apollo服务器的RESTDataSource

async postTask(file: Scalars["Upload"]) {

const url = process.env.BASE_TASK_URL

return this.post(`${url}/task/`, {

"task_type": "brief-analysis",

"binary_payload": file

})

}

async postTask(file: Scalars["Upload"]) {

const url = process.env.BASE_TASK_URL

const formData = new FormData()

formData.append("file", file)

const config = {

headers: {

"Content-Type": "application/x-www-form-urlencoded"

// "Content-Type": "multipart/form-data"

},

data: formData

};

return axios.post(`${url}/task/`, formData, config).then(res => res.data).catch(e => console.log("in post req", e))

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值