Node.js nodejs向服务发送graphql上传文件时出现问题

Node.js nodejs向服务发送graphql上传文件时出现问题,node.js,express,apollo,Node.js,Express,Apollo,我使用graphql upload将一个文件从一个web客户端上传到一个apollo express服务器,再上传到另一个服务器,该服务器需要一个PUT 使用文件请求avatarImage 文件已正确进入uploadLogo()。我可以从express服务器保存并查看它。当我传递文件流时 要放置/化身,该端点不接收它。我已经测试过从文件系统直接向/avatar发送文件,可以确认端点是否正常工作 这是我的数据源文件,我在其中将文件的createReadStream附加到表单数据,并将其发送到fet

我使用graphql upload将一个文件从一个web客户端上传到一个apollo express服务器,再上传到另一个服务器,该服务器需要一个PUT 使用文件请求
avatarImage

文件已正确进入uploadLogo()。我可以从express服务器保存并查看它。当我传递文件流时 要放置/化身,该端点不接收它。我已经测试过从文件系统直接向/avatar发送文件,可以确认端点是否正常工作

这是我的数据源文件,我在其中将文件的createReadStream附加到表单数据,并将其发送到fetch put中

MyAPI类扩展了RESTDataSource{ 异步上传徽标(id,文件){ const{createReadStream,filename,mimetype}=wait file; const stream=createReadStream(); const formData=new formData(); formData.append('avatarImage',流{ contentType:mimetype, 文件名 }); const headers=formData.getHeaders(); 把这个还给我,放进去http://localhost:5000/avatar,formData,{headers}); } }
将表单数据流发送到此/avatar端点时,我遗漏了什么?

我也面临着这个问题,不确定这是否是解决问题的正确方法。无法使用
graphql upload
找到要从
graphql server express
上载到另一个服务的任何引用/文档。()

实际上,我必须将该文件作为临时文件写入文件系统,并将文件系统读取流传递给表单数据,以使其正常工作。没有临时文件,不知何故标题是不正确的,在上游看来,内容长度是
1
0
或某个奇怪的值

这就是我所做的:

// this is a method on our data-source-rest
async uploadSomeFile({ invoices }: { invoices: Promise<FileUpload> }) {
    const { createReadStream: apolloFileStream, mimetype, filename } = await invoices;
    const tempFilename = `/tmp/${Date.now()}/${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 data = new FormData();
    data.append('file', rstream);
    return this.post(`/transactions/upload`, data);
  }
//这是数据源rest上的一个方法
异步上传文件({invoices}:{invoices:Promise}){
const{createReadStream:apolloFileStream,mimetype,filename}=wait发票;
const tempFilename=`/tmp/${Date.now()}/${filename}`;
const stream=apolloFileStream();
const wstream=createWriteStream(tempFilename);
等待新的承诺((决定,拒绝)=>{
流动
.管道(wstream)
.on('finish',()=>resolve())
.on('错误',()=>拒绝());
});
const rstream=createReadStream(tempFilename);
const data=新表单数据();
data.append('file',rstream);
返回此.post(`/transactions/upload`,data);
}