gpt4 book ai didi

javascript - Node.js 缓冲区和二进制文件

转载 作者:行者123 更新时间:2023-11-30 12:59:09 26 4
gpt4 key购买 nike

我正在使用 Node 读取文件并尝试将其作为多部分 MIME post 发送,但在接收端出现文件损坏的问题。

我读取文件并准备发送,如下所示:

fs.readFile("before.png", function(err,data) {
// Snip
content += data.slice(0,data.length);

问题是似乎有什么东西填充了流。请参阅下图,将 before.png 源文件与目标接收的文件进行比较。 EF BF BD 的序列表明 .slice() 没有给我底层字节,可能是强制转换为 UTF-8 编码的内容。

enter image description here

我也试过通过 toString() 获取字节,但那里没有 bean。我仍然在上传的文件中看到损坏。

 // content += data.toString() // UTF-8 default
content += data.toString('binary')

我怀疑默认的 toString() 也将二进制文件强制转换为 UTF-8,但我是否期望“二进制”给我底层字节流?


编辑以回应 Brad。我尝试了 concattin'g,但我仍然需要将我的对象转换回字符串,此时 UTF-8 字符似乎重新出现在流中。

contentToSend = Buffer.concat([ header, data, footer ] );
this.oauth.post( endpoint, accessToken, accessTokenSecret, contentToSend.toString(), contentType, function( x, y, z ) {

最佳答案

我认为正在发生的事情是您实际上正在使用连接运算符,迫使 Node.js 将 contentdata 视为具有默认编码 UTF- 的字符串8.试试这个:

content = Buffer.concat(content, data);

此外,没有理由为全长数据获取切片。您可以按原样使用整个传入缓冲区。

关于javascript - Node.js 缓冲区和二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17910072/

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