如何在javascript中将可读流转换为blob?

Kay*_*Kay 5 javascript multipartform-data fetch node.js

我有一个测试应该读取图像文件并将图像文件提交给接受多部分表单数据的api。

我正在使用 fetch api 和 formdata 类来设置图像文件。formdata 只接受一个 blob。因此,在我的测试中,我必须将读取的文件类型为流的文件转换为 blob。

 test("should submit front document", async () => {

        const side = "front";
        const stream = fs.createReadStream(process.cwd() + "/test/resources/" + "id/front.jpg");
        const image = await streamToBlob(stream);
        const front = await myLibrary.document(id, side, image);
        expect(front.success).toBe(true);

    });
Run Code Online (Sandbox Code Playgroud)

我试图在这里使用一个库将流转换为 blob https://www.npmjs.com/package/stream-to-blob。然而,测试失败。如果我尝试console.log(image)我得到以下Blob {}

为什么 blob 是空的 {}?

async document(id, side, image) {

    const url = this.API_URL + "/document"

    let formData = new FormData();
    formData.set("image", image, "front.jpg");
    formData.set("side", side);

    let headers = new Headers();
    headers.set("Authorization", "Bearer " + this.API_KEY);

    const request = {
        method: "POST",
        body: formData,
        headers: headers,
    };

    try {

        const response = await fetch(url, request);
        const data = await response.json();

        return data;

    } catch (err) {
        throw err;
    }

}
Run Code Online (Sandbox Code Playgroud)