Javascript Nodejs从HTTP请求中丢失数据
我目前正试图从HTTP请求中获取一个文件,然后将数据写入一个文件(在本例中为PDF) 使用以下命令,我可以生成有效的PDF,但我发送的文件只有几行,但我创建的文件是空白的 我用于尝试获取数据的函数:Javascript Nodejs从HTTP请求中丢失数据,javascript,node.js,http,fs,Javascript,Node.js,Http,Fs,我目前正试图从HTTP请求中获取一个文件,然后将数据写入一个文件(在本例中为PDF) 使用以下命令,我可以生成有效的PDF,但我发送的文件只有几行,但我创建的文件是空白的 我用于尝试获取数据的函数: async function getDataFromReq(req){ let body = ''; await req.on('data', (chunk) => { body += chunk; }); return body; } 我实现
async function getDataFromReq(req){
let body = '';
await req.on('data', (chunk) => {
body += chunk;
});
return body;
}
我实现该函数并将其写入文件:
let file = await getDataFromReq(req);
await writeFile(fileName,file);
我的写入文件功能:
async function writeFile(fileName,file){
fs.writeFileSync('./'+fileName, file);
}
注:
我能够使用King Friday的解决方案,但我接受了Quentins的建议,并使用现有的库来完成这项任务,而不是重新发明轮子。我使用multer遵循本指南-- 你只能有效地等待承诺
不返回承诺req.on
wait
内部getDataFromReq
getDataFromReq
的声明中去掉async
(除非在声明中使用wait
,否则它毫无意义)getDataFromReq
req.on('end'),…
)解析该处理程序中的承诺
- 你只能有效地等待承诺
不返回承诺req.on
wait
内部getDataFromReq
getDataFromReq
的声明中去掉async
(除非在声明中使用wait
,否则它毫无意义)getDataFromReq
req.on('end'),…
)解析该处理程序中的承诺
const body = await getDataFromReq(req);
await fs.writeFile(fileName, body);
像这样
然后您可以在异步方法中使用,如
const body = await getDataFromReq(req);
await fs.writeFile(fileName, body);
我不认为
req.on()
会返回一个承诺。您可以创建自己的resolve(body)
在req.on('end')中writeFile
函数也不需要是异步函数,因为fs.writeflesync
是同步的。我不认为req.on()
返回一个承诺。您可以创建自己的承诺,并在req.on('end')内resolve(body)
函数writeFile
也不需要是异步函数,因为fs.writeFileSync
是同步的。我实现了你的代码,所以谢谢你。不幸的是,我似乎还是遇到了同样的问题。PDF只是空白,但有一些元信息,比如作者。我还做了什么吗uld有错吗?@Niall你应该到这里->codesandbox.io并选择一个节点沙盒,然后你可以把你的代码放在这里并进行协作,这意味着我可以看一看并调整一下。我真的很喜欢他们的服务。@Niall还可以看一看这里有关fs的内容->@Niall我调整过,可能会有帮助,请参阅节点v10+的兼容fs承诺参考。@Niall这是proba布莱:这是一个很好的电话。你会发现有很多很好的npm软件包。祝你好运。我实现了你的代码,所以谢谢你。不幸的是,我似乎仍然遇到同样的问题。PDF只是空白,但有些元信息是存在的,比如作者。我做的还有什么可能是错误的吗?@不,你应该这么做转到这里->codesandbox.io并选择一个节点沙盒,然后您可以放置您的代码并进行协作,这意味着我可以查看和调整。我非常喜欢他们的服务。@Niall还可以查看这里有关fs的内容->@Niall我调整过,可能会有所帮助,请查看节点v10+的兼容fs promises参考。@Niall这可能是一个不错的选择。您会在那里找到有很多很棒的npm软件包,祝你好运。