Jag*_*agi 70 multipartform-data http-post node.js
我在Node.js中使用POST请求上传文件时遇到问题.我必须使用request
模块来完成它(没有外部的npms).服务器需要使用file
包含文件数据的字段的多部分请求.在没有使用任何外部模块的情况下,在Node.js中做起来似乎很容易.
我尝试过使用这个例子,但没有成功:
request.post({
uri: url,
method: 'POST',
multipart: [{
body: '<FILE_DATA>'
}]
}, function (err, resp, body) {
if (err) {
console.log('Error!');
} else {
console.log('URL: ' + body);
}
});
Run Code Online (Sandbox Code Playgroud)
Leo*_*tny 101
看起来你已经在使用request
模块了.
在这种情况下,你需要发布的multipart/form-data
就是使用它的form
功能:
var req = request.post(url, function (err, resp, body) {
if (err) {
console.log('Error!');
} else {
console.log('URL: ' + body);
}
});
var form = req.form();
form.append('file', '<FILE_DATA>', {
filename: 'myfile.txt',
contentType: 'text/plain'
});
Run Code Online (Sandbox Code Playgroud)
但如果您想从文件系统发布一些现有文件,那么您可以将其作为可读流传递:
form.append('file', fs.createReadStream(filepath));
Run Code Online (Sandbox Code Playgroud)
request
将自己提取所有相关的元数据.
有关发布multipart/form-data
查看node-form-data
模块的更多信息,该模块由内部使用request
.
Cla*_*vin 19
实现的formData
字段的未记录功能request
是将选项传递给form-data
它使用的模块的能力:
request({
url: 'http://example.com',
method: 'POST',
formData: {
'regularField': 'someValue',
'regularFile': someFileStream,
'customBufferFile': {
value: fileBufferData,
options: {
filename: 'myfile.bin'
}
}
}
}, handleResponse);
Run Code Online (Sandbox Code Playgroud)
如果您需要避免调用requestObj.form()
但需要将缓冲区上载为文件,这非常有用.该form-data
模块还接受contentType
(MIME类型)和knownLength
选项.
此更改已于2014年10月添加(因此在询问此问题后2个月),因此现在可以安全使用(2017年以上).这相当于版本v2.46.0
或以上request
.
归档时间: |
|
查看次数: |
133680 次 |
最近记录: |