【发布时间】:2013-07-20 05:12:51
【问题描述】:
我想使用 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 模块)发送类似 JPG 的内容并将 Buffer 转换为请求正文的字符串时,它会失败。我尝试了 Buffer.toString(encoding) 方法和 content-transfer-encoding: encoding 标头的不同组合,但没有成功。出于某种原因,base64 编码也不起作用,我用 connect bodyParser 对其进行了测试,似乎它不关心正文中的 content-transfer-encoding: base64 标头 - 内容仍然以未解码的 base64 字符串形式出现。
而且我不想使用像 node-formidable 或 express 这样的外部模块来解决我的问题。
谢谢。
【问题讨论】:
标签: node.js character-encoding multipartform-data