node-request中的curl –upload-file相当于什么

我正在使用节点请求,并尝试将文件发送到IBM的HDFS,根据本文档 。

传递这个JSON对象来请求成功上传:

var options = { method: 'put', body: 'foo', headers: { 'Content-Type': 'application/octet-stream', 'Transfer-Encoding': 'chunked' } }; 

运行这个CURL命令也成功的上传了一个文件:

curl -v -X PUT -L -b cookie.jar "https://host:port/webhdfs/v1/tmp/myLargeFile.zip?op=CREATE&data=true" --header "Content-Type:application/octet-stream" --header "Transfer-Encoding:chunked" -T "file.txt"

但是,试图指定一个文件stream如下所示:

  var options = { method: 'put', headers: { 'Content-Type': 'application/octet-stream', 'Transfer-Encoding': 'chunked' }, multipart : [ { body: fs.createReadStream(localFile) } ] }; 

失败了,我不知道我要去哪里错了。 如何使用节点请求从CURL复制'–upload-file'参数?

我在Github上举了一个例子 。

要点是你需要将文件传送到请求:

 fs.createReadStream(filePath).pipe(request.put(putURL,options,function(err, httpsResponse, body){ if ( err ) { console.log('err', err); } else { console.log(body); } })); 

仍然不知道如何传递一个文件stream作为一个选项的选项参数,但这将为我做!

– 更新 –

哇,我觉得自己是一个绝对白痴。 该选项将是file 。 是的,这很简单。