节点JS POST多部分/表单数据请求

时间:2013-07-21 10:01:45

标签: node.js character-encoding multipartform-data

我想使用multipart / form-data content-type通过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--'
}

但是当我在文件读取后尝试发送类似JPG的内容(例如通过FS modile)并将Buffer转换为请求体的字符串时,它会失败。我尝试了 Buffer.toString(encoding)方法和 content-transfer-encoding:encoding 标头的不同组合,但没有成功。出于某种原因,base64编码也不起作用,我已经使用connect bodyParser对其进行了测试,似乎它并不关心正文中的 content-transfer-encoding:base64 标题 - 内容仍然来自未编码的base64字符串。

我不想使用node-formidable或express等外部模块来解决我的问题。

感谢。

1 个答案:

答案 0 :(得分:-1)

我使用Buffer代替String

解决了这个问题