2016-09-07 14 views
0

stdoutをformDataにストリームして送信することは可能ですか?
このコードは、私があまりにも働いstdoutからhttp応答へのパイプバイナリファイル

PS file.stdout.pipe(PassThrough())を試みたが、ない

const shell = require('shelljs') 
const request = require('request') 
const isStream = require('isstream') 

const file = shell.exec('cat file.jpg', { silent: true, async: true }) 

console.log(isStream(file.stdout)) // true 

const response = request 
    .post({ 
    url, 
    formData: { 
    image: file.stdout 
    } 
}, (err, httpResponse, body) => { 
    console.log(err) 
}) 

仕事のようですが、ありません:

cat image.jpg | curl -XPOST https://domain/process --form user_id=123456 --form [email protected] 

:私はちょうどでこれを行う

ノードで上記を実装することは可能ですか?

PS: 私はfs.createReadStream あります知っているが、実際のプロジェクトで、私は標準出力に外部アプリストリームファイルから画像を受信

答えて

0

私は自分の質問にお答えします

const spawn = require('child_process').spawn 
const ch = spawn('cat', ['./file.jpg']) 

let buf = new Buffer(0) 

ch.stdout 
.on('data', d => { 
    buf = Buffer.concat([buf, d]) 
}) 
.on('end',() => { 
    send(buf) 
}) 

function send (data) { 

    request 
    .post({ 
     url, 
     formData: { 
     image: { 
      value: data, 
      options: { 
       filename: 'test.jpg' 
      } 
     } 
     } 
    }, (err, httpResponse, body) => {}) 
} 
関連する問題