node.js - 从 nodejs 将表单数据发送到 API
问题描述
早些时候我使用 rest API 将我的文件上传到服务器。我有输入类型文件,我正在使用该 API 将表单数据发送到服务器。它工作正常,但现在我必须使用 graphql 突变。我们有一个运行应用程序的 apollo 服务器,我在其中使用相同的 API 上传我们的图像,但似乎文件对象的格式与 rest API 预期的格式不同。所以我的问题是我们如何从nodejs创建与浏览器中相同的文件对象。
我们RESTDataSource
用于在 graphql 应用程序中进行 HTTP 调用
我的架构
type Mutation {
uploadFile(file: Upload!): Boolean!
}
这是我的解析器
import { createWriteStream, createReadStream } from 'fs';
import FormData from 'form-data';
async uploadFile(file: any): Promise<any> {
const url = new URL(`https://dev.dummber.com/portal/file/v1/uploadFile`);
const { createReadStream: apolloFileStream, mimetype, filename } = await file;
const tempFilename = `${filename}`;
const stream = apolloFileStream();
const wstream = createWriteStream(tempFilename);
await new Promise((resolve, reject) => {
stream
.pipe(wstream)
.on('finish', () => resolve())
.on('error', () => reject());
});
const rstream = createReadStream(tempFilename);
const formData = new FormData();
formData.append('uploadingFile', rstream);
const response = await this.post(url.toString(),
{
data: formData
}
, {
headers: {
'Content-Type': 'multipart/form-data'
}
});
return true
}
解决方案
推荐阅读
- swift - Firebase Firestore 查询未执行
- c++ - 为什么我的班级成员不存在?
- git - 如何在 git 中将 7 个推送的提交压缩为一比一?
- javascript - “未处理的拒绝(SyntaxError):JSON 中位置 0 的意外令牌 h”与 response.json()
- reactjs - 如何在 Gatsby 中集成 whatwg-fetch
- c++ - 在 CIN 上输入 10 位数字时程序永远循环
- javascript - 对象方法内部的设置超时
- java - 如何在 Java OpenCV 中将两点相加?
- python - 将查询集从装饰器传递给函数
- javascript - 将环境变量传递给前端