gpt4 book ai didi

node.js - 如何从字符串创建文件并通过 FormData 发送它

转载 作者:行者123 更新时间:2023-12-04 08:54:02 25 4
gpt4 key购买 nike

我有一个字符串形式的svg。我想将该字符串转换成一个文件并通过 FormData 将其发送到另一个 API。

我找到了一种工作方式,但它包括在本地创建一个文件(使用 fs),然后从刚刚创建的文件创建一个 readStream。处理许多文件这非常慢,并且大多数时候会以超时结束。

fs.writeFile('file.svg', svgString, async () => {
const fr = fs.createReadStream('file.svg');
const formData = new FormData();
formData.append('media', fr);

const response = await Axios.post(route, formData, {...}
});
});

这是我使用 Buffer 和 Readable 的(失败的)方法:

// Create readable from svg string
const b = Buffer.from(svgString, 'utf-8');
const r = Readable.from(b);

const formData = new FormData();
formData.append('media', fr);

const response = await Axios.post(route, formData, {...});

此方法给出的结果与第一个方法不同。然后我从外部 API 收到错误。

问题是如何在不将本地文件写入磁盘的情况下获得与第一种方法相同的结果。

提前致谢!

最佳答案

嗯,问题出在缓冲区而不是表单数据。

API 要求数据有一个文件名,当使用 fs.createReadStream('file.svg');

从实际文件中读取时,它会自动拥有该文件名

所以在创建 Buffer 时我不得不手动添加它。所以最终的工作解决方案是:

const svgBuffer = Buffer.from(svgString);
const formData = new FormData();
formData.append('media', svgBuffer, {
filename: 'content.svg'
});

关于node.js - 如何从字符串创建文件并通过 FormData 发送它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63938473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com