我需要使用formData将pdf发送到api。我下载的 pdf 在记录时看起来像这样:<Buffer 6d 61 67 65 49 2f ... >
如果我fs.writeFileSync是完全可读的。但我想尝试将它传递给 api 而不必用fs, 来编写它,以将 pdf 作为缓冲区进行操作。我的帖子看起来像这样:
const formData = new FormData();
formData.append('access_key', this.config.redacted);
formData.append('redacted','redacted');
formData.append('file', fs.createReadStream('./filename.pdf'));
return post('urlRedacted', formData, {
headers: formData.getHeaders(),
})
Run Code Online (Sandbox Code Playgroud)
这个请求会成功,但它需要我用 编写文件fs,我想避免这种情况。我尝试了一些方法,例如使用库node-streamifier来帮助我从缓冲区创建可读流,但是 api 向我发送了一个错误:{ error: 'Invalid parameter \'file\' or \'bucket\': Object expected' }.
所以我的问题是,如何重现fs.createReadStream行为,这似乎是唯一适用于我的用例的行为?
注意:我尝试像这样实现 此解决方案:formData.append('file', createReadStream(myBuffer))并且像这样formData.append('file', createReadStream(myBuffer,{ encoding: 'binary' }))但没有对错误进行任何更改。
解决方案:
fs 正在流式传输数据并智能地从它正在读取的文件中添加一些信息,因此在数据流的开头提供了这一行:
_streams:
[ '----------------------------622545709057705753853273\r\nContent-
Disposition: …Run Code Online (Sandbox Code Playgroud)