我正在使用 Node 读取文件并尝试将其作为多部分 MIME 帖子发送,但在接收端出现文件损坏的问题。
我阅读了文件并准备发送,如下所示:
fs.readFile("before.png", function(err,data) {
// Snip
content += data.slice(0,data.length);
问题是某些东西似乎在填充流。请参阅下面的图片,将 before.png 源文件与在目的地收到的文件进行比较。EF BF BD 的序列表明 .slice() 没有给我底层字节,可能是强制转换为 UTF-8 编码的东西。
我也尝试通过 toString() 获取字节,但那里没有 bean。我仍然在上传的文件中看到损坏。
// content += data.toString() // UTF-8 default
content += data.toString('binary')
我怀疑默认的 toString() 也将二进制文件强制转换为 UTF-8,但是会期望“二进制”给我底层的字节流吗?
编辑以回应布拉德。我尝试了 concattin'g,但我仍然需要将我的对象转换回字符串,此时 UTF-8 字符似乎重新出现在流中。
contentToSend = Buffer.concat([ header, data, footer ] );
this.oauth.post( endpoint, accessToken, accessTokenSecret, contentToSend.toString(), contentType, function( x, y, z ) {