将生成进程的STDOUT管道化为superagent upload

时间:2014-12-19 03:29:52

标签: node.js spawn superagent

我正在努力研究如何获取衍生子进程的输出并将该输出提供给多部分mime上传。

据我所知,应该工作

var request = require('superagent');
var spawn = require('child_process').spawn;

var spawned = spawn('echo', ['hello', 'world']);

request.post('http://localhost/api/upload')
    .attach('file', spawned.stdout)
    .end(function(res) {
        console.log("DONE", res);
    });

不幸的是,这会从Node中抛出相当无用的Error: socket hang up响应。

1 个答案:

答案 0 :(得分:0)

你非常接近!

这是最终版本,可以满足您的需求:

var sys = require('sys')
var exec = require('child_process').exec;

var request = require('superagent');

exec('echo hello world', function(err, stdout, stderr) {
  request.post('http://localhost/api/upload')
    .attach('file', stdout)
    .end(function(res) {
      console.log('DONE', res);
});

我在这里使用exec,因为它的回调函数输出了stdout和stderr流,这似乎是你想要的。