我想使用 multipart/form-data 内容类型通过 http 模块从 Node JS 发送文件。二进制编码的问题。当我尝试发送简单的文本文件时没关系:
url: 'some-site.com',
method: 'POST',
headers:
{
'content-type': 'multipart/form-data; boundary=-----BNDRY',
'content-length': 128
},
body: '-------BNDRY\r\ncontent-type: text/plain\r\ncontent-disposition: form-data; name="file"; filename="file.txt"\r\n\r\ntest\r\n-------BNDRY--'
}
但是,当我尝试在文件读取后(例如通过 FS modile)发送类似 JPG 的内容并将 Buffer 转换为请求正文的字符串时,它会失败。我尝试了Buffer.toString(encoding)方法和content-transfer-encoding: encoding标头的不同组合,但没有成功。出于某种原因,base64 编码也不起作用,我已经使用 connect bodyParser 对其进行了测试,并且似乎它不关心content-transfer-encoding: base64 header in body - 内容仍然是未解码的 base64 字符串。
而且我不想使用像 node-formidable 或 express 这样的外部模块来解决我的问题。
谢谢。