最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How do I send a form with a request promise? - Stack Overflow

programmeradmin1浏览0评论

I am trying to use the request-promise library or anything similar to send files via a post request from node to another machine that is running Node. Using the normal request module I could so something like

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'
});

This code is from the question: Uploading file using POST request in Node.js however it is not using promises.

Can anyone explain how to do the same thing but with the request-promise library or if there is any other way to promisify this?

I am trying to use the request-promise library or anything similar to send files via a post request from node to another machine that is running Node. Using the normal request module I could so something like

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'
});

This code is from the question: Uploading file using POST request in Node.js however it is not using promises.

Can anyone explain how to do the same thing but with the request-promise library or if there is any other way to promisify this?

Share Improve this question edited May 23, 2017 at 10:28 CommunityBot 11 silver badge asked Jun 14, 2016 at 13:28 nbroekingnbroeking 8,9485 gold badges24 silver badges43 bronze badges 2
  • you want req to return a promise? – maioman Commented Jun 14, 2016 at 13:36
  • What is purpose of using Promise? – guest271314 Commented Jun 14, 2016 at 13:36
Add a ment  | 

1 Answer 1

Reset to default 6

According to the docs that are linked from the answer you already found, you don't need to use a .form() method on the resulting request object, but can simply pass the form as the formData option to request. You'll be able to do the same with 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!');
});

Alternatively, request-promise still seems to return request instances (just decorated with then/catch/promise methods), so the form function should still be available:

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!');
});
发布评论

评论列表(0)

  1. 暂无评论