我如何发送表单与请求承诺?
我正在尝试使用request-promise库或类似的任何东西,通过从节点发送到另一台运行Node的机器发送文件。 使用正常的请求模块,我可以这样
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' });
这个代码来自这个问题: 在Node.js中使用POST请求上传文件,但是它不使用promise。
任何人都可以解释如何做同样的事情,但与请求承诺库,或者如果有任何其他方式promisify呢?
根据已经find的答案链接的文档 ,您不需要在生成的请求对象上使用.form()
方法,而只需将form作为formData
选项传递给request
。 你可以用request-promise来做同样的事情:
requestPromise.post({url: url, formData: { file: { value: '<FILE_DATA>', options: { filename: 'myfile.txt', contentType: 'text/plain' } } }).then(function(body) { console.log('URL: ' + body); }, function(err) { console.log('Error!'); });
或者,请求承诺似乎仍然返回请求实例(只是用/ catch
/ promise
方法进行修饰),所以form
函数仍然可用:
var req = requestPromise.post(url); var form = req.form(); form.append('file', '<FILE_DATA>', { filename: 'myfile.txt', contentType: 'text/plain' }); req.then(function(body) { console.log('URL: ' + body); }, function(err) { console.log('Error!'); });