NodeJS 无法对节点18表单数据使用createReadStream

qzlgjiam  于 2022-11-22  发布在  Node.js
关注(0)|答案(1)|浏览(236)

在节点18释放fetch/FormData之前,我们可以执行以下操作:

import FormData from 'form-data'

const form = new FormData();
form.append('my_field', 'my value');
form.append('my_buffer', new Buffer(10));
form.append('my_file', fs.createReadStream('/foo/bar.jpg'));

但是,使用全局FormData时,我无法再传递流-“my_file”行的错误是:
类型为“ReadStream”的参数不能赋值给类型为“string”的参数|斑点,俄-地
我知道这仍然是实验性的,所以可能是一个错误,或者有没有其他的方法来做这件事-除了阅读整个文件作为一个字符串...

fdbelqdn

fdbelqdn1#

节点v18的原生FormData是w3 FormData interface的实现,因此您需要使用该API。
append()方法接受Blob,因此您应该能够使用blob流使用者

import { createReadStream } from 'node:fs';
import { blob } from 'node:stream/consumers';

// assuming a valid async context for brevity
const file = await blob(createReadStream("/foo/bar.jpg");

const formData = new FormData();
formData.append("my_file", file, "bar.jpg");

相关问题